我在名为private void QuizReset()
的表单上有一个名为FormMain
的函数,我想知道是否有办法在名为Form2
的表单上访问它而不会出现构建错误?可能看起来像一个非常简单的问题或我遗漏的东西,但我已经尝试将它从私人改为公共,我不能做正确的,因为我得到构建错误等。如果可以毫无错误地完成修改,我就全力以赴。如果有人能帮助我,那就太好了。
谢谢。
该功能的当前代码是:
private void QuizReset()
{
//resets the difficulty selection control and shows it again upon resetting the quiz
difficultySelectionControl.Reset();
difficultySelectionControl.BringToFront();
btnNext.Enabled = false;
lblStatus.Text = "Please select a difficulty";
iCorrectACount = 0;
iCurrentQIndex = 0;
}
答案 0 :(得分:0)
如果要访问该方法,则不能将其设为私有。 static public
是一个简单的解决方法。然后你可以用MainForm.LoadQuiz()
来调用它。另一个选择是将逻辑移动到辅助类中。
答案 1 :(得分:0)
将它们放入公共公共课程中。然后将LoadQuiz函数作为属于该类的私有静态方法。您还可以使LoadQuiz成为静态公共,这很快且很脏。我不建议这样做,因为暴露公开的方法可能导致记忆和分配问题。
答案 2 :(得分:0)
我认为你不能把这个函数放在普通的静态类中,因为,如果我理解正确,该函数使用表单的控件(btnNext.Enabled = false;
)。这意味着函数可以/必须仅用于FormMain
类的实例。
如果您想从Form2
调用此函数,则Form2
必须引用FormMain
。
接下来我的方法是:
在Form2
中创建变量:
private FormMain frmMain;
然后创建Form2
的构造函数,我在FormMain
Form2
的引用
public Form2(FormMain inFrmMain)
{
this.frmMain = inFrmMain;
}
Form2
的开放代码将是:
Form2 frm2 = New Form2(this);
frm2.Show();
在此之后,您可以从FormMain
致电Form2
功能:
this.frmMain.QuizReset()
当然,首先将功能QuizReset
更改为公开