调试自定义Windows.Forms.ComboBox
问题描述:
问题 - 每当我将自定义ComboBox设置为“ON”时,它将暂时变为“ON”,但它偶尔会切换到“OFF”。调试自定义Windows.Forms.ComboBox
基本上我有一种方法:
void value_SelectedIndexChanged(object sender, EventArgs e)
{
if((ComboBox)sender.Focused == true)
{
if(value.SelectedIndex == false) // OFF
// set a bunch of variables for OFF
else // ON
// set a bunch of variables for ON
}
}
后我设置组合框为“ON”时,则执行用于“ON”选择的索引的代码路径。但是,然后,选择的索引切换到“关闭”,出于我不明白的原因。结果,关闭变量代码路径然后执行。
要试图修复它,我把日志语句来捕获发送者和EventArgs的每当这个“value_SelectedIndexChanged”方法被调用。然而,发件人等于类,EventArgs是System.EventArgs。
请告诉我如何调试这个问题。
答
我不明白为什么你组织你的代码的方式。那岂不是更有意义是这样的:
void value_SelectedIndexChanged(object sender, EventArgs e)
{
switch(value.SelectedIndex)
{
case 0: // OFF
// set a bunch of variables for OFF
break;
case 1: // ON
// set a bunch of variables for ON
break;
}
}
的问题可能是由“设置一组变量为OFF” -actions引起的。你是否已经通过在处理程序中设置断点并逐步完成所有测试来测试它?
Simon,我已经介绍了设置OFF变量的代码。但是,我没有看到任何可能会改变值的selectedIndex的代码。我不太熟悉GUI。什么通常会触发selectedIndex中的更改? – 2012-04-07 01:56:15
另外,我不完全理解检查ComboBox是否集中的第一个if语句。我同意你的代码清楚。 – 2012-04-07 01:57:37
以任何方式更改选区都会更改SelectedIndex属性。所以这可能是由更改支持ComboBox的数据,更改SelectedItem属性或其他一些内容引起的。 在方法的末尾添加断点和单步可能会给出一些线索,说明导致第二次更改的原因。 – Simon 2012-04-09 23:03:03