我先告诉你我要做什么,然后我是怎么做的。如果有更好的方法,请告诉我。
我正在处理两种形式 - 让我们称之为form_main和form_preferences
当form_preferences表单启动时,我希望在单击form_preferences上的按钮(保存按钮)之前禁用form_main。
所以这就是我在做的事情: 在form_main中单击按钮
form_preferences frm_p = new form_preferences();
frm_p.Visible = true;
this.enabled = false;
//到目前为止一切顺利
当我在form_preferences上点击save时,它会调用form_main中的一个公共静态方法,该方法需要再次启用该表单。不幸的是我无法直接这样做,因为它是一种静态方法。
我尝试创建一个新的表单实例,但后来我必须创建新的实例并销毁原来的实例,这似乎是一个很大的浪费和低效。有更好的方法吗?
答案 0 :(得分:1)
将form_main方法更改为实例方法而不是静态方法。在创建时将form_main的实例传递给你的sub_form,因此它保留了一个引用。
答案 1 :(得分:0)
如果主表单只有一个副本,那么将表单设为单例或在程序中使用静态引用从静态方法中访问它。
在您的主要方法中,请执行以下操作...
public static class Program {
public static YourFrom form = null;
public static void Main(string args[]) {
Program.form = new YourFrom();
Application.Run(form);
}
}
每当您需要访问类中的表单对象时,请使用Program.form对象来访问它。