C# 如何以编程方式为特定ListView项触发双击事件?
我正在尝试编程在Windows窗体的特定项上触发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;
双击事件,但似乎找不到如何执行此操作
为了进一步解释,在打开表单时,我需要在该表单上的列表视图项
上触发双击
事件,以打开下一个表单。我找不到哪里可以指明我对触发该事件感兴趣的行。我不知道您为什么需要它,但通过这种方式,您可以触发双击程序:
//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
的职责。通常情况下,最好进行处理,而不是依赖双击<代码>项目激活
也将在双击时引发。