8 つのチェックボックスが動的に追加されたチェックボックス リストを作成しました。私のプログラムのアイデアは次のとおりです。ボックスをチェックするとプロッターにチャートが表示され、チェックを外すと消えます。
私の問題は、チェックボックスを動的に追加し、8 つの異なるグラフに対して 8 つの異なるイベントが必要であるため、イベントを管理する方法がわからないことです。
ありがとう。
それらすべてに対して 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
}
}
ここでの回答は、.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;
}
}
}
イベント ハンドラーの "sender" パラメーターは、どのコントロールがイベントを発生させたかを示します。
どこかで、コントロールを作成します。メンバー変数として、辞書などのどこかに参照を保持していることを確認してください。
次に、イベント ハンドラーで次の操作を行います。
If(sender==myControl)
{
...do something...
}
Elseif (sender==myOtherControl)
{
...do something else...
}