【问题标题】:Refresh the control or reload form from button click event handler on other form从其他表单上的按钮单击事件处理程序刷新控件或重新加载表单
【发布时间】:2012-05-18 19:31:34
【问题描述】:

我在 Liste_Form 中有一个 GridView,在 Close_Form 中有一个按钮。

当我单击 Close_Form 上的按钮时,如何刷新 Liste_Form 中的 Gridview

或者重新加载 Liste_Form。

【问题讨论】:

    标签: c# winforms refresh reload findcontrol


    【解决方案1】:

    您有几种方法可以做到这一点。我可能建议的一种方法是将委托传递给构造函数中的第二种形式:

    Form2 myForm2 = new Form2(RefreshGrid); // assign to a Form2 local variable
    

    ...在 Form1(网格所有者)中,您定义了 RefreshGrid 方法:

    void RefreshGrid(){
       // perform grid refresh
    }
    

    ...这样在myForm2 中,您可以在单击按钮时执行操作:

    void OnButtonClicked(object sender, EventArgs e){
       refreshAction();
    }
    

    【讨论】:

      【解决方案2】:

      在 Close_Form 上定义事件(当然考虑更好的事件名称):

      public event EventHandler SomethingHappened; 
      

      在按钮单击事件处理程序中引发此事件:

      private void Button_Click(object sender, EventArgs e)
      {
          if (SomethingHappened != null)
              SomethingHappened(this, EventArgs.Empty);
      }
      

      在 Liste_Form 上订阅此活动:

      Close_Form closeForm = new Close_Form();
      closeForm.SomethingHappened += Close_Form_SomethingHappened;
      

      在此事件处理程序中刷新您的列表:

      private void Close_Form_SomethingHappened(object sender, EventArgs e)
      {
          // refresh GridView
      }
      

      【讨论】:

        猜你喜欢
        • 2017-06-07
        • 1970-01-01
        • 2012-03-22
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多