我有一个使用 ListView 的项目。用户可以从列表视图中选择一些东西(它在详细信息模式下设置) - 并且在某些情况下会出现一个消息框,要求确认是/否。确认代码不会以任何方式修改 ListView 或选择。该代码位于 SelectedIndexChanged 事件处理程序中。
问题是这样的——当我做出一个创建弹出窗口的选择时——程序最初按预期工作。当我将鼠标移回列表视图时,它会导致选择更改为鼠标下方的符号(无需单击) - 就好像“HoverSelect”已打开(当它未打开时)。这只发生在我做出涉及弹出消息框的选择之后。
考虑到我弄坏了一些东西,我决定写一个简单的测试。我创建了一个带有硬编码值的列表视图并输入了以下代码:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
listView1.Enabled = false;
MessageBox.Show("Test");
listView1.Enabled = true;
}
当我做出选择时 - 事件被触发两次。我不确定它是否与我原来的问题有关,或者只是另一个巧合。
补充:在我上面的测试示例中 - 发生以下情况:
第一次选择 - “测试” 第二次选择 - “测试” “测试” 第三... N - “测试” “测试”
所以我认为这是我主要问题的另一个方面。删除代码以禁用/启用列表视图并没有什么不同。
如何让 MessageBox 和 ListView 互相“玩得很好”?