从单独的设计时形式

时间:2015-11-10 01:17:42

标签: c# forms controls design-time

我正在寻找 最简单的 方式来访问从其他表单在Windows应用程序表单的主窗体中创建的设计时控件。我想要操纵所有控件,而不想制作getter和setter方法。只会有一些仅用于输入的其他表单,以便更改主表单上的控件状态 - 所以我不关心这里的最佳实践,因为这不会是一个大项目许多人将会工作,多个变量会变得混乱,因为我对此完全陌生并想要一些有用的东西。我不是在专业的编程环境中工作。

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

那说:只需将类型更改为" public"但是,似乎不允许我这样做。

因此,对于文本框,当我从以下位置更改它时:

private System.Windows.Forms.RichTextBox AssignmentSectNumber;

public System.Windows.Forms.RichTextBox AssignmentSectNumber;

一旦我将C#系统放入我的表单中,它自动声明它,我仍然无法从表单二访问它

Form1.AssignmentSectNumber.Text

我是否有办法在Form1中设置控件,以便Form2通过Form1通过点语法或直接解决它们来解决问题?

PS:我没有看到制作控件的方法" public"在我在设计时将它们放入表单中列出的任何属性下。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

  

我没有看到任何一种方法可以让控件“公开”   我在设计时将它们放入表单时列出的属性。我   遗失了什么?

选择Control,然后在Properties Pane中,将其Modifiers属性更改为Public。

  

当我运行程序时,form1出现在屏幕上。这不是意思   必须有它的一个实例?如果是那个intance的名字   不是形式1它会是什么?

您需要访问当前运行的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!";