我有一个 C# .NET WinForm。在表单中,我允许用户通过在 ListView 中双击来将项目添加到 ListView。这会将一个 TextBox 控件添加到 ListView 并将键光标放在 TextBox 中,以便用户可以键入。
我检测到用户以多种方式完成了项目(例如按 Enter、Esc、Tab...),而且当他们离开 (TextBox.Leave) 文本框时也是如此。
问题是这组步骤:
- 用户通过将鼠标移到 TextBox 外触发 TextBox.Leave。
- 我将新项目添加到 ListView。
- 我在 ListView 中选择新项目。
- 鼠标上移,我刚刚选择的新项目失去焦点并被取消选择。
我希望 TextBox.Leave 由 MouseUp 触发,而不是 MouseDown。我怎样才能做到这一点?
编辑: Cody 建议使用 ListView.LabelEdit 属性。这是我尝试的结果:
listView_DoubleClick(...) {
listView.LabelEdit = true;
if(double clicked on existing listViewItem) {
listViewItem.BeginEdit(); //this works as expected
} else {
var newItem = listView.Items.Add("");
newItem.BeginEdit(); //this doesn't work, see below
}
}
对 newItem.BeginEdit() 的调用仅在用户双击新项目将显示的位置时起作用。如果他们双击列表视图中的任何其他空白区域,则会添加新项目,但不会进入编辑模式。这里发生了什么?