【发布时间】:2012-09-20 06:16:08
【问题描述】:
一点背景知识:我是 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 我可以通过在 WinForms 中将 e.Handled 设置为“true”来手动处理此类行为显然没有这样的东西。
是否有某种编译器标志?
【问题讨论】:
-
你必须滚动你自己的标志 AFAIK
-
我从未听说过有人从 WPF -> WinForms 迁移!公平竞赛。
-
您运行的是哪个版本的 .NET?通过在 W7 上安装 4.5 修复了 4.0 中的一些错误,但您不能在 XP 上做同样的事情。 (我怀疑是这样,但你永远不知道。)
-
为什么会有人从 WPF转到Winforms?
-
@Killercam 哈哈,我花了 2 年时间从 WinForms 迁移到 WPF,它太复杂了,但你知道组合框中的进度条让它变得如此酷
标签: c# .net windows winforms listview