首页 文章

Winforms ListView MouseUp事件多次触发

提问于
浏览
2

在我的.NET 4,5 Winforms应用程序中,当我从该事件打开文件时,ListView控件的MouseUp事件多次触发,如下所示:

private void ListView1_MouseUp(object sender, MouseEventArgs e)
{
   ListViewHitTestInfo hit = ListView1.HitTest(e.Location);

   if (hit.SubItem != null && hit.SubItem == hit.Item.SubItems[1])
   {
      System.Diagnostics.Process.Start(@"C:\Folder1\Test.pdf");
      MessageBox.Show("A test");
   }
}

注意:单击列表视图的SubItem 1时,文件将打开,但消息框至少出现两次 . 但是,当我注释掉打开文件的行时,消息框只出现一次(应该如此) . 我需要打开列表视图中用户点击其名称的文件 . 如果没有多次激活MoueUp事件,我怎样才能实现这一目标?另请注意,listview的MouseClick事件并不总是像_1746395那样工作 . 所以,我必须使用MouseUp事件 .

编辑:我应该提到ListView处于详细信息模式 .

1 回答

  • 2

    避免 HitTest() 并使用 ListView 的原生函数 GetItemAt() . 来自MSDN的示例如下所示:

    private void ListView1_MouseDown(object sender, MouseEventArgs e)
    {
    
        ListViewItem selection = ListView1.GetItemAt(e.X, e.Y);
    
        // If the user selects an item in the ListView, display 
        // the image in the PictureBox. 
        if (selection != null)
        {
            PictureBox1.Image = System.Drawing.Image.FromFile(
                selection.SubItems[1].Text);
        }
    }
    

相关问题