我绝对没有编程链接或属性设置,使得我的CheckedChanged由于除检查单选按钮之外的任何内容而触发。但是,当我点击一个不相关的,不相关的按钮时,按钮的点击处理程序会触发(这是预期的)。在这个点击处理程序中,该按钮会自行禁用(它会重新启用不同按钮的单击),然后触发myRadioButton_CheckedChanged句柄来处理不相关的单选按钮。设置myButton.Enabled = true会导致单选按钮的CheckedChanged处理程序触发
是我所看到的调用堆栈基本上是
myRadioButton_CheckedChanged(...) myButton_Click(...) 主(...)
在myButton_Click线即触发myRadioButton_CheckedChanged显然是
myButton.Enabled = false;
相关的代码是:
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
// L-R
if (radioButton1.Checked == true)
{
orientation_left = 3;
pictureBox2.Invalidate();
Debug.Print("left {0}", orientation_left);
}
}
private void select1_Click(object sender, EventArgs e)
{
Debug.Print("select1click");
if (select1Down == false)
{
// ... stuff
select1.Enabled = false; // Causing the CheckedChanged to fire
select2.Enabled = false;
select1Down = true;
}
}
其实我可以证实这种奇怪的行为。让我挖。 –