从单独的设计时窗体访问设计时控件

本文关键字:访问 控件 窗体 单独 | 更新日期: 2023-09-27 18:21:13

我正在寻找最简单的方法,从另一个窗体访问在windows应用程序窗体的主窗体中创建的设计时控件。我希望操作所有控件,而不希望生成getter和setter方法。只有两个额外的表格只用于输入,以改变主表格上的控件状态——所以我不关心这里的最佳实践,因为这不会是一个大项目,很多人都在工作,多个变量会混淆,因为我对此完全陌生,想要一些行之有效的东西。我不是在专业的编程环境中工作。

我希望能够以某种方式简单地用点语法来处理它们。

也就是说:仅仅把类型改为"公共"似乎不允许我这么做。

所以,对于一个文本框,当我将其从更改时

private System.Windows.Forms.RichTextBox AssignmentSectNumber;

public System.Windows.Forms.RichTextBox AssignmentSectNumber;

一旦我把它放进表格,C#系统就会自动声明它,我仍然无法用从表格二访问它

Form1.AssignmentSectNumber.Text

有没有什么方法可以在Form1中设置控件,以便通过点语法通过Form1或直接寻址它们,在Form2中对它们进行寻址?

附言:当我在设计时将控件放入表格中时,我看不出有什么方法可以将所列任何属性下的控件"公开"。我是不是错过了什么?

从单独的设计时窗体访问设计时控件

我看不出有什么方法可以使任何当我在设计时将它们放入表单时列出的属性。我是吗错过了什么?

选择控件,然后在"属性"窗格中,将其"修改器属性"更改为"公用"。

当我运行程序时,屏幕上会出现form1。这不意味着一定有这样的例子?如果该无形资产的名称form1不就是什么吗?

您需要访问当前正在运行的Form1实例。有很多方法可以做到这一点。一个非常简单的方法是在调用其Show()方法时设置辅助窗体的所有者:

// ... from within Form1 ...
Form2 f2 = new Form2();
f2.Show(this); // <-- setting Form1 as the "owner" of Form2 via "this"

现在,在Form2中,您将.Owner属性强制转换回Form1,并访问将Modifiers属性更改为Public的控件:

// ... over in Form2 ...
Form1 f1 = (Form1)this.Owner;
f1.label1.Text = "Hello from Form2!";