.NET控件和作用域
本文关键字:作用域 控件 NET | 更新日期: 2023-09-27 18:19:26
在编写涉及控件的事件处理函数时,程序员如何绕过范围限制,这些控件不是通过GUI声明的,而是在主源文件中声明的?
为了解决这个问题,在全局范围内声明这样的控件而不是Form1_Load()是否"可以接受"?
private void Form1_Load(object sender, EventArgs e)
{
ComboBox t = new ComboBox();
Button b = new Button();
b.OnClick += b_OnClick;
}
private void b_OnClick(object sender, OnClickEventArgs e)
{
s.Add("Hello s!"); // The object s is a ComboBox control generated in the Designer GUI
t.Add("Hello t!");
}
// Line 10 is valid.
// Line 11 is invaid because t does not exist in the current scope. How might one work around this issue?
我认为这是可以接受的,如果你查看form.designer文件,你会注意到使用设计器创建的所有控件都是全局控件。所以我认为你可以在自己的代码中做同样的事情。
然而,我认为在某些情况下,您不需要这些控件,否则逻辑会指示您直接与设计器一起构建它们,并避免使用该代码。
当然,上面的代码缺少一些绝对必要的信息,比如位置、大小、名称和最重要的信息。Form.Controls.Add(control)
声明,但我不知道这是否是因为简化了你的问题。