一点背景知识:我是 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 中显然没有这样的事情。
是否有某种编译器标志?