Control.Leave由MouseDown触发,而不是MouseUp
我有一个C#.NET WinForm。在表单中,我允许用户通过双击ListView将项添加到ListView。这会将一个TextBox控件添加到ListView,并将键光标放在TextBox中,以便用户可以键入。
我通过几种方式检测到用户已经完成了某个项目(例如按Enter,Esc,Tab ...),但是当他们离开(TextBox.Leave)TextBox时也是如此。
问题是这一系列步骤:
用户通过鼠标悬停在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()的调用才有效。如果他们双击列表视图中的任何其他空白区域,则会添加新项目,但不会进入编辑模式。这里发生了什么?
没有找到相关结果
已邀请:
1 个回复
锯康