0

我在一个名为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;
    }
4

3 回答 3

0

如果您想访问该方法,它不能是私有的。static public是一个简单的解决方法。然后你可以用MainForm.LoadQuiz(). 另一种选择是将逻辑移动到辅助类中。

于 2013-03-14T19:38:52.503 回答
0

把他们放在一个公共的普通班级里。然后将 LoadQuiz 函数作为属于该类的私有静态方法。您还可以将 LoadQuiz 设为静态公共,这样既快速又脏。我不建议这样做,因为公开公开方法可能会导致内存和分配问题。

于 2013-03-14T19:46:03.357 回答
0

我认为你不能把这个函数放在普通的静态类中,因为如果我理解正确的话,这个函数使用了 form( btnNext.Enabled = false;) 的控件。这意味着该函数只能/必须与FormMain类的实例一起使用。

如果要从 调用此函数Form2,则Form2必须具有 的引用FormMain

我的方法将是下一个:

在 中创建一个变量Form2

private FormMain frmMain;

然后创建一个构造函数 Form2,我在其中分配了FormMainin的引用Form2

public Form2(FormMain inFrmMain)
{
    this.frmMain = inFrmMain;
}

打开代码Form2将是:

Form2 frm2 = New Form2(this);
frm2.Show();

在此之后,您可以从以下位置调用您的FormMain函数Form2

this.frmMain.QuizReset()

当然,首先将功能更改QuizReset为公共

于 2013-03-14T20:20:55.503 回答