我希望这个名字能够证明我的问题...所以,我刚刚开始制作一个记忆游戏,并且有25个复选框按钮用于显示项目.
我想知道是否有一种方法可以告诉EventArgs或Object,如果每个按钮使用相同的事件处理程序,它会从哪个按钮发出.
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
checkBox = Code which will determine what checkBox sent it.
if (checkBox.Checked)
{ Box.ChangeState(checkBox, true); }
else { Box.ChangeState(checkBox, false);}
}
Run Code Online (Sandbox Code Playgroud)
Vah*_*ghi 11
Name在定义每个复选框时尝试设置每个复选框的属性,然后使用它((CheckBox)sender).Name来标识每个复选框.
定义时间:
CheckBox chbx1 = new CheckBox();
chbx1.Name = "chbx1";
chbx1.CheckedChanged += checkBox_CheckedChanged;
CheckBox chbx2 = new CheckBox();
chbx2.Name = "chbx2";
chbx2.CheckedChanged += checkBox_CheckedChanged;
CheckBox chbx3 = new CheckBox();
chbx3.Name = "chbx2";
chbx3.CheckedChanged += checkBox_CheckedChanged;
Run Code Online (Sandbox Code Playgroud)
和
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
string chbxName = ((CheckBox)sender).Name;
//Necessary code for identifying the CheckBox and following processes ...
checkBox = Code which will determine what checkBox sent it.
if (checkBox.Checked)
{ Box.ChangeState(checkBox, true); }
else { Box.ChangeState(checkBox, false);}
}
Run Code Online (Sandbox Code Playgroud)
发送者对象实际上是发起事件的 Control,您可以将其转换为正确的类型以访问其所有属性。您可以按照规定使用Name,或者像我有时那样使用该Tag属性。但在这种情况下,只需将 sender 转换为 CheckBox 就可以了。
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
CheckBox cb = (CheckBox)sender;
if (cb.Checked)
{ Box.ChangeState(cb, true); }
else { Box.ChangeState(cb, false); }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36354 次 |
| 最近记录: |