1

8 つのチェックボックスが動的に追加されたチェックボックス リストを作成しました。私のプログラムのアイデアは次のとおりです。ボックスをチェックするとプロッターにチャートが表示され、チェックを外すと消えます。

私の問題は、チェックボックスを動的に追加し、8 つの異なるグラフに対して 8 つの異なるイベントが必要であるため、イベントを管理する方法がわからないことです。

ありがとう。

4

3 に答える 3

2

それらすべてに対して 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 
     }
 }
于 2013-02-15T16:38:12.997 に答える
1

ここでの回答は、.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;
        }
    }
}
于 2013-02-15T16:44:55.873 に答える
0

イベント ハンドラーの "sender" パラメーターは、どのコントロールがイベントを発生させたかを示します。

どこかで、コントロールを作成します。メンバー変数として、辞書などのどこかに参照を保持していることを確認してください。

次に、イベント ハンドラーで次の操作を行います。

If(sender==myControl)
{
   ...do something...
}
Elseif (sender==myOtherControl)
{
    ...do something else...
}
于 2013-02-15T16:38:53.653 に答える