一些背景信息:我之前使用WPF,现在正在将我的应用程序迁移到WinForms。
我的一个朋友告诉我,我的代码在Windows XP上无法运行(启动时会生成堆栈溢出),但在我开发的Windows 7上可以正常工作。
经过一番调查,问题的原因大致如下:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
listView1.SelectedIndices.Clear();
listView1.Items[0].Selected = true;
}
我注意到这个明显的错误决策后,我不再想知道它为什么不能在Windows XP上运行。我正在想 它为什么能在Windows 7上运行。
显然,编译器在某一个时刻会理解我的意图并防止相同的事件重复触发,但是我更愿意让它什么都不做,这样我就可以在开发平台上看到并消除错误,而不必同时在两个平台上测试。在WPF中,我可以通过将e.Handled设置为“true”来手动处理这种情况,而在WinForms中,显然没有这样的东西。
是否有某种编译器标志可以解决这个问题?