.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?

.NET控件和作用域

我认为这是可以接受的,如果你查看form.designer文件,你会注意到使用设计器创建的所有控件都是全局控件。所以我认为你可以在自己的代码中做同样的事情。

然而,我认为在某些情况下,您不需要这些控件,否则逻辑会指示您直接与设计器一起构建它们,并避免使用该代码。

当然,上面的代码缺少一些绝对必要的信息,比如位置、大小、名称和最重要的信息。Form.Controls.Add(control)声明,但我不知道这是否是因为简化了你的问题。