【问题标题】:Triggering a "Click" event without user input在没有用户输入的情况下触发“点击”事件
【发布时间】:2010-07-06 15:41:33
【问题描述】:

我有一个用于刷新显示的 Windows 窗体链接标签“刷新”。

在我的代码的另一部分,一个单独的窗口窗体的一部分,我有一个对话框,它首先更改加载到显示中的数据。执行此其他代码后,按“刷新”正确更新数据。

对话框菜单是否有一种简单的方法可以在完成更改数据后“单击”“刷新”链接标签?

使用 Visual Studio 2008。

【问题讨论】:

    标签: c# winforms events


    【解决方案1】:

    对于按钮非常简单,只需使用:

    button.PerformClick()
    

    无论如何,我更愿意做这样的事情:

    private void button_Click(object sender, EventArgs e)
    {
       DoRefresh();
    }
    
    public void DoRefresh()
    {
       // refreshing code
    }
    

    并调用DoRefresh() 而不是PerformClick()


    编辑(根据 OP 更改):

    你仍然可以使用我的第二个解决方案,这是更可取的:

    private void linkLabel_Click(object sender, EventArgs e)
    {
       DoRefresh();
    }
    
    public void DoRefresh()
    {
       // refreshing code
    }
    

    您可以从表单外部致电DoRefresh(),因为它被标记为公开。

    但是,如果您真的需要以编程方式生成点击,只需查看Yuriy-Faktorovich's Answer

    【讨论】:

    • +1 用于替代 PerformClick。 PerformClick 是生产代码中的一种骇人听闻的方法。我认为它通常应该仅限于测试。
    • 我的错;我以为它是一个按钮,但它实际上是一个链接标签,就像一个按钮。有没有类似的方法?
    • msdn.microsoft.com/en-us/library/bb337532.aspx,但正如你所说,单独的方法更好。
    • @Yuriy:非常感谢,我不知道。我已经修改了我的帖子;)
    【解决方案2】:

    您可以拨打PerformClick method。但通常最好让按钮的 Click 事件调用您编写的 Refresh 方法。菜单也会调用该方法。否则,您的菜单取决于那里的按钮。

    编辑:

    LinkLabel 显式地实现了 IButtonControl。所以你可以使用:

    ((IButtonControl)button).PerformClick();

    【讨论】:

      【解决方案3】:

      你可以使用一个方法来刷新显示,bouton_click和对话框调用这个方法

      public void refrechDate()
      {
      }
      
      
      private void button_click(...)
      {
         refrechData();
      }
      

      【讨论】:

        【解决方案4】:
        private void MyMethod()
        {
           // ...
        
           // calling refresh
           this.button1_Click(this.button1, EventArgs.Empty);
        
           // ...
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
           // refresh code
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-11
          • 1970-01-01
          • 1970-01-01
          • 2017-12-15
          • 2010-10-10
          • 2020-06-23
          • 2021-08-07
          • 1970-01-01
          • 2015-01-19
          相关资源
          最近更新 更多