【问题标题】:listview column header double click eventlistview 列标题双击事件
【发布时间】:2017-12-14 07:37:51
【问题描述】:

是否可以在列表视图列标题上捕获鼠标双击事件?
我使用listView1_ColumnClick 事件处理了点击事件,但我似乎找不到任何方法来捕捉它的双击。

【问题讨论】:

  • @MongZhu 我认为这个答案是针对 wpf 的,尝试使用它但缺少很多参考。
  • 你是对的,我的错。我删除了评论

标签: c# forms winforms


【解决方案1】:

如果你想管理一个没有双击事件的控件,你可以使用时间戳来计算点击之间的时间差。喜欢:

    DateTime lastClickDate = DateTime.Now;
    private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
    {
        //You can change the value 1200 as you want.
        if ((DateTime.Now - lastClickDate).TotalMilliseconds < 1200)
        {
            MessageBox.Show("double clicked");
        }
        this.Text = (DateTime.Now - lastClickDate).TotalMilliseconds.ToString();
        lastClickDate = DateTime.Now;
    }

【讨论】:

  • 有帮助但不是那么好,下一次单击将触发它无论是单击还是双击,尽管我将其设置为 700 毫秒。但无论如何感谢@Coskun Ozogul
【解决方案2】:

除了上一个答案,我建议添加鼠标指针的位置。 Cursor.Position 在这方面会有所帮助。

DateTime lastClickDate = DateTime.Now;
int xPosition = Cursor.Position.X;
int yPosition = Cursor.Position.Y;  
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
    //You can change the value 1200 as you want.
    if ((DateTime.Now - lastClickDate).TotalMilliseconds < 1200)
    {
        //Just for example I have given as equals it is better to allow
        //some variation since mouse may be moved a little during clicks          
        if(Cursor.Position.X==xPosition && Cursor.Position.Y==yPosition)
        {   
            MessageBox.Show("double clicked");
        } 
    }
    this.Text = (DateTime.Now - lastClickDate).TotalMilliseconds.ToString();
    lastClickDate = DateTime.Now;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2011-02-10
    相关资源
    最近更新 更多