我参照的帖子:
【子窗体调用父窗体变量或方法】:
将父窗体下的变量设置为全局静态变量。
如字符串类型prj_path:
public static string prj_path;
子窗体调用父窗体(父窗体名:MainForm)的prj_path时,使用代码“MainForm.prj_path”即可。
方法调用同理,将方法类型修改为public static即可。
主窗口中 public static string a;
子窗口中public static void Creatchart1()
{
string a = Form1.comboBox1.Text;
//省略
}
但仍然在 Form1.comboBox1.Text;处显示对象引用非静态的字段方法或属性“Form1.comboBox1.Text”是必需的
if (Owner is Form1 parent) {
string a = parent.comboBox1.Text;
} else {
throw new Exception("父窗口类型错误");
}
你要使用父级的话方法就不该用static,因为静态初始化的时候不可能有父级,一个窗口类可能会有多个实例,属性也慎用static
静态方法中不能调用非静态字段或者属性的。你这样写是不行的。你可以把方法写成非静态的就行了