C# 如何以编程方式为特定ListView项触发双击事件?

C# 如何以编程方式为特定ListView项触发双击事件?,c#,.net,winforms,listview,listviewitem,C#,.net,Winforms,Listview,Listviewitem,我正在尝试编程在Windows窗体的特定项上触发双击事件,但似乎找不到如何执行此操作 为了进一步解释,在打开表单时,我需要在该表单上的列表视图项上触发双击事件,以打开下一个表单。我找不到哪里可以指明我对触发该事件感兴趣的行。我不知道您为什么需要它,但通过这种方式,您可以触发双击程序: //I dont know when u will fire this Event so we create a Dump to call our Method MouseEventArgs f;

我正在尝试编程在Windows窗体的特定项上触发
双击
事件,但似乎找不到如何执行此操作


为了进一步解释,在打开表单时,我需要在该表单上的
列表视图项
上触发
双击
事件,以打开下一个表单。我找不到哪里可以指明我对触发该事件感兴趣的行。

我不知道您为什么需要它,但通过这种方式,您可以触发双击程序:

//I dont know when u will fire this Event so we create a Dump to call our Method
MouseEventArgs f;        

//call the Method
Test_DoubleClicked(sender,e);

private void Test_DoubleClicked(object sender, MouseEventArgs e)
{
    // some code
}

我设法弄清楚我遗漏了什么。在触发事件之前,需要设置Listview的选定项。

虽然问题看起来是(事实上是),但在我看来,这是一个有效的问题

与一些人喜欢
按钮方法的原因相同,一些人可能希望
项目的
激活方法
以编程方式激活项目。它对于测试目的也很有用

适用于大多数情况的正确解决方案

在跳转到
Activate
方法之前,作为对OP答案的评论,我应该说,虽然您共享的解决方案已经解决了您的问题,但对于大多数情况,以下是正确的解决方案:

最好将逻辑放在类似于
DoSomething(ListViewItem){/**}
的方法中。然后,您可以通过调用
DoSomething(listView1.SelectedItems[0])
重用
ItemActivate
中的相同逻辑。另外,如果在代码的其他部分中,您希望在将项设置为选中项的同时使用相同的逻辑,那么设置item.selected=true就足够了;然后
DoSomething(项目)
*

如您所见,设置所选项目不是
DoSomething
的职责,而且一般来说,最好处理
itemcactivate
,而不是依赖双击<代码>项目激活
也将在双击时引发

以编程方式激活项目

在这篇文章中,我将分享
ListViewItem
的一个扩展方法,使用名为
Activate
的方法以编程方式执行项目激活,然后要激活
项目
,只需调用
item.Activate()
方法即可

using System;
using System.Reflection;
using System.Windows.Forms;
public static class ListViewItemExtensions
{
    public static void Activate(this ListViewItem item)
    {
        if (item.ListView == null)
            throw new InvalidOperationException();
        var onItemActivate = item.ListView.GetType().GetMethod("OnItemActivate",
            BindingFlags.NonPublic | BindingFlags.Instance);
        item.Selected = true;
        onItemActivate.Invoke(item.ListView, new object[] { EventArgs.Empty });
    }
}

你的问题是什么?你已经试过什么了?请阅读并编辑您的问题。@nilsK我不明白我的问题出了什么问题。我正试图做我所描述的事情,但找不到解决问题的方法。网站上唯一一个稍微相似的问题并没有给出答案,你没有提供任何示例代码<代码>我不知道怎么做
问题离题了。什么触发了双击?这方面的一个示例片段将有助于提供答案。你在进行单元测试吗?你为什么要这样做?请描述你的问题,也许有更好/更聪明的方法来解决它。查找x-y问题!您可以处理ListView\u双击事件并检查选中的行。根据所选项目的值,可以选择显示或不显示特定表单。这就是说:这个网站上有很多问题可以帮助你解决这个问题。最好是在
Test\u双击
事件中调用一个私有方法,而不是在解决方案解决了你的问题时调用这个私有方法,但是最好将逻辑放在类似
DoSomething(ListViewItem){/**}的方法中
。然后,您可以通过调用
DoSomething(listView1.SelectedItems[0])
重用
ItemActivate
中的相同逻辑。另外,如果在代码的某些其他部分中,您希望在将项目设置为选定项的同时使用相同的逻辑,那么设置
item.selected=true就足够了然后
DoSomething(项目)
。正如您所看到的,设置所选项目不是
DoSomething
的职责。通常情况下,最好进行处理,而不是依赖双击<代码>项目激活
也将在双击时引发。