我想要的功能是双击ListView中的空行,并让它在其中插入一个项目。它已经响应了MouseDoubleClick事件(用于编辑项目)并且工作正常,但是如果双击位于不包含ListViewItem的ListView的一部分上,似乎MouseDoubleClick不会被触发。ListView - 如何响应双击非项目?
我已经尝试了对话框本身的常规MouseDoubleClick事件响应,但事件不会被触发,如果它在ListView的“空白区域”之一。
有没有办法做出响应的ListView的“空白区域”点击没有子类化?哪些事件/事件需要/需要处理才能做到这一点?
到对话框双击(小鼠和常规)的电流响应是这样的:
if (RectangleToScreen(list.ClientRectangle).Contains(e.X, e.Y))
list_MouseDoubleClick(sender, e);
和list_MouseDoubleClick()(其中m_SelItem是当前选择的项目)
private void list_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (m_SelItem == null && m_Combo.Items.Count > 0)
{
m_SelItem = new ListViewItem(new string[] { "", "Rd" });
list.Items.Add(m_SelItem);
}
...
}
编辑:看起来整个地区只是事件的黑洞。例如,我试图回应ListView和Dialog的常规点击/鼠标点击事件。即使这些不会被触发,除非点击在ListViewItem上。我猜测唯一的解决办法是将子类化。
编辑:坚持不懈!事实证明,我可以通过响应“的MouseDown”事件这样得到期望的结果:
private void list_MouseDown(object sender, MouseEventArgs e)
{
if (e.Clicks == 2)
list_MouseDoubleClick(sender, e);
}
您可以显示您当前的代码为双击..?也许你可以添加一些额外的条件,检查SelectedIndex或Item值是否为空或空值,然后做你的插入.. – MethodMan 2013-03-22 15:24:33
我最初做了你的建议,问题是双击事件甚至不会被解雇,如果它不在ListViewItem – riqitang 2013-03-22 15:25:23
@Sean,你是否尝试处理'DoubleClick'事件?即使鼠标光标不在某个项目上,也应该触发该项目。 – 2013-03-22 15:26:25