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