gpt4 book ai didi

c# - ListView - 如何响应双击非项目?

转载 作者:行者123 更新时间:2023-11-30 12:11:24 26 4
gpt4 key购买 nike

我想要做的是双击 ListView 中的空行并让它在那里插入一个项目。它已经响应 MouseDoubleClick 事件(用于编辑项目)并且工作正常,但如果双击不包含 ListViewItem 的 ListView 部分,则似乎不会触发 MouseDoubleClick。

我已经尝试响应对话框本身的常规 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);
}

最佳答案

MouseDown 事件最终成为我所需要的:

private void list_MouseDown(object sender, MouseEventArgs e)
{
if ( e.Clicks == 2 )
list_MouseDoubleClick(sender, e);
}

关于c# - ListView - 如何响应双击非项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com