C# 在另一个窗体上访问私有函数
我在一个名为C# 在另一个窗体上访问私有函数,c#,winforms,C#,Winforms,我在一个名为FormMain的表单上有一个名为private void QuizReset()的函数,我想知道是否有一种方法可以在名为Form2的表单上访问它,而不会出现生成错误?可能看起来是一个非常简单的问题,或者我遗漏了一些东西,但我已经尝试将它从私有更改为公共,并且我不能正确地执行它,因为我会遇到构建错误等等。如果可以不出错的话,我愿意修改它。如果有人能帮我,那就太好了 多谢各位 该功能的当前代码为: private void QuizReset() { //res
FormMain
的表单上有一个名为private void QuizReset()
的函数,我想知道是否有一种方法可以在名为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;
}
如果要访问该方法,它不能是私有的<代码>静态公共是一个简单的解决方法。然后可以使用
MainForm.loadquick()
调用它。另一种选择是将逻辑移到助手类中。将它们放在公共类中。然后将loadquick函数作为属于该类的私有静态方法。您还可以将LoadQuike设置为静态公共,这样做既快捷又肮脏。我不建议这样做,因为公开方法可能会导致内存和分配问题。我认为您不能将此函数放在公共静态类中,因为,如果我理解正确,该函数使用以下形式的控件(btnNext.Enabled=false;
)。这意味着该函数只能/必须与FormMain
类的实例一起使用
如果要从Form2
调用此函数,则Form2
必须具有FormMain
的引用
我的方法是:
在表单2中创建变量
:
private FormMain frmMain;
this.frmMain.QuizReset()
然后创建Form2
的构造函数,我在Form2
public Form2(FormMain inFrmMain)
{
this.frmMain = inFrmMain;
}
打开表格2
的代码为:
Form2 frm2 = New Form2(this);
frm2.Show();
在此之后,您可以从Form2
调用FormMain
函数:
private FormMain frmMain;
this.frmMain.QuizReset()
当然,首先将函数
QuizReset
更改为public如何“访问”它?显示一些代码。没有办法,因为它是私有的。构建错误是什么?“将其更改为公共”是正确的答案,因此您肯定还有其他问题;我们需要代码和实际错误消息来帮助。该语法用于静态方法调用。将函数设置为public static,然后像MainForm.QuizReset()那样调用它;我尝试执行此操作,但随后出现错误,例如非静态字段、方法或属性'quizzologic.MainForm.btnNext'需要对象引用,并且当前上下文中不存在名称'QuizReset'。该函数的代码在原始帖子中。