如果这看似微不足道,我道歉但我似乎无法抓住这一点。这里的其他问题略有不同,所以这是我的问题:
我有 MainForm
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
public void activateButton()
{
button1.PerformClick();
}
//........
我想从activateButton()
致电Main()
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form myForm = new MainForm();
Application.Run(myForm);
myForm.activateButton() // error
}
为什么不能从activateButton()
看到公共方法myForm
?
答案 0 :(得分:3)
变量myForm
的类型为Form
。如果您将其声明为MainForm
,则可以访问您的方法:
MainForm myForm = new MainForm();
myForm.activateButton() // No error.
答案 1 :(得分:2)
正如其他评论者指出的那样,由于您的变量属于Form而不是MainForm,因此会出现错误。但还有另一个问题。一旦调用Application.Run(窗体),应用程序就进入了主消息泵循环。这本质上是一个无限的while()循环,它只检查用户输入并处理Windows消息调度(你可以通过覆盖表单的WndProc方法来挂钩)。因此,在关闭表单之前,不会调用Main之后的任何代码。
如果您在表单打开后尝试调用activateButton()方法,请尝试在表单的构造函数中调用它,或者更好的方法是重写OnLoad()并在那里调用它。
答案 2 :(得分:1)
MainForm myForm = new MainForm();
在原始代码中,编译时类型为Form
,因此activateButton
不可见。