代码之家  ›  专栏  ›  技术社区  ›  Ash Burlaczenko

如何引用动态创建的组件?

  •  1
  • Ash Burlaczenko  · 技术社区  · 15 年前

    我有一些代码,可以通过点击按钮创建一些组件。像这样的。

    CheckBox chk = new CheckBox();
    chk.Top = 50;
    chk.Left = 50;
    chk.Text = "Check Box Test";
    chk.Name = "chkTest"
    this.Controls.Add(chk);
    

    if(chkTest.Checked)
    {
    //Do this
    }
    

    请帮忙。

    先谢谢你。

    5 回复  |  直到 15 年前
        1
  •  3
  •   siride    15 年前

    在类中创建一个名为chkTest的成员变量,稍后可以使用它,或者在需要时从控件集合中动态检索它,如下所示:

    CheckBox chkTest = (CheckBox)Controls["chkTest"];
    if(chkTest.Checked) {
        // ...
    }
    
        2
  •  1
  •   Quentamia    15 年前

    如果仅在选中或取消选中控件时才关心它,请使用事件。

    chk.Checked += new RoutedEventHandler(CheckBox_Checked);
    chk.Unchecked += new RoutedEventHandler(CheckBox_Checked);
    
    private void CheckBox_Checked(object sender, RoutedEventArgs e)
    {
        CheckBox chkBox = sender as CheckBox;
        if (chkBox.IsChecked.Value)
        {
            // Do this...
        }
    }
    

        3
  •  0
  •   TrueWill    15 年前

    您正在引用chkTest,但您创建了chk。

        4
  •  0
  •   MCain    15 年前

    您可以将复选框声明为页面的成员变量。这样您就可以更容易地访问它。

    类MyPage {

    //然后在页面加载中 //chkTest=新建复选框()。。。

        5
  •  0
  •   duraz0rz    15 年前
    if ((Controls.Items["chkTest"] as CheckBox).Checked)
    {
    // Do this
    }
    

    应该有用,但看起来不太好看。:)

    您可以将其声明为变量,然后像以前一样使用它:

    CheckBox chkTest = Controls.Items["chkTest"] as Checkbox;
    if (chkTest.Checked)
    {
    // Do this
    }
    

    http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection_members.aspx