如何在C#WPF应用程序中使用动态CheckBox进行管理?

时间:2013-02-15 16:34:39

标签: c# wpf events dynamic checkbox

我创建了一个复选框列表,其中包含8个动态添加的chechbox。我的计划的想法是: 当选中一个方框时,我的绘图仪上会出现一个图表,当我取消选中它时,它会消失。

我的问题是我不知道如何管理事件,因为我动态添加了复选框,我需要为8个不同的图表提供8个不同的事件。

感谢。

3 个答案:

答案 0 :(得分:1)

您可以为所有人使用一个事件。在事件内部,您将获得控件的名称,该名称触发了事件。像这样:

 private void CheckBox_Click(object sender, RoutedEventArgs e)
 {
     CheckBox senderChk = sender as CheckBox;
     switch (senderChk.Name)
     {
         case "checkBox1":  //do something 
         case "checkBox2":  //do something 
     }
 }

答案 1 :(得分:0)

事件处理程序的“sender”参数指示引发事件的控件。

在某处,您可以创建一个控件。确保你在某个地方保留对它的引用,要么作为成员变量,要么在字典中或其他任何地方。

然后,在您的事件处理程序中,执行以下操作:

If(sender==myControl)
{
   ...do something...
}
Elseif (sender==myOtherControl)
{
    ...do something else...
}

答案 2 :(得分:0)

这里的答案建议使用.Name属性,但是对于动态创建的复选框,现在可以正常工作。

CheckBox chx;
chx.Tag = "Chart 1"; // put these tags in an enum or at least constants
chx.Click += chx_Click; 

void chx_Click(object sender, RoutedEventArgs e)
{
    CheckBox chx = sender as CheckBox;
    if (chx != null && chx.Tag != null)
    {
        switch (chx.Tag)
        {
            case "Chart 1": 
                        myChart1.Visibility = chx.IsChecked? Visibility.Visible: Visibility.Collapsed;  
                break;
            case "Chart 2": //...
                break;
            default:
                break;
        }
    }
}