【问题标题】:Is there a possibility to programmatically trigger item action in ListView, like when you dobuleclick on it?是否有可能以编程方式触发 ListView 中的项目操作,例如当您单击它时?
【发布时间】:2015-08-04 00:28:06
【问题描述】:

我到处搜索,但找不到答案。我需要启动 ListView 项目操作,因此它会引发 ItemActivate 事件。目前,只能使用 ENTER 键或双击...我想知道是否可以通过编程方式执行此操作,例如:

listView.Items[int].Activate();

这当然行不通,因为那里没有实现该函数 Activate()。例如,我找不到如何以编程方式触发按钮,但它在您键入时出现的上下文菜单中:

buttonX.PerformClick();

...它会触发 button_click 事件。我想知道 ListView 控件中是否有类似的东西来触发其中的项目?我希望它以编程方式引发此事件,而不是通过鼠标双击或键盘上的 Enter 键...

private void myListView_ItemActivate(object sender, EventArgs e)
    {
        MessageBox.Show("hello");
    }

【问题讨论】:

    标签: winforms listview action


    【解决方案1】:

    根据the documentation,ListView 中的 EventHandler 应该是公共的。因此,您可以通过以下方式引发事件:

    myListView.ItemActivate(myListView, EventArgs.Empty);
    

    这样订阅此活动的每个人都会收到通知。


    另一种方式,当然是直接调用你的方法:

    myListView_ItemActivate(this, EventArgs.Empty);
    

    但这并不能真正归类为“引发事件”,因为您实际上并没有引发事件。你只需调用一个方法。

    【讨论】:

    • 我的想法是重用部分代码,这些代码是通过事件处理程序执行的,用于单击按钮。我可以通过从我的代码中的任何位置以编程方式使用button.PerformClick(); 激活按钮来做到这一点。我从来没有想过我可以调用事件方法本身!使用第二行,我可以调用该方法,给它我希望的任何对象,作为发送者(列表视图,按钮...),从而使我比使用 PerformClick() 或类似方法更有能力调用程序的该部分“行动”...感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多