簡體   English   中英

代表和活動

[英]Delegate and event

我有兩種形式。

Form1中:

public partial class Panel1
    {
        public void ShowExport(object sender, EventArgs e)
        {
           .......
        }
    }

窗體2:

public partial class Panel2
{
        public delegate void ShowExportReport(object sender, EventArgs e);
        public event ShowExportReport ShowExportClicked;

private void buttonExport_Click(object sender, RoutedEventArgs e)
        {         
           if (ShowExportClicked != null)
            {
                ShowExportClicked(sender, new EventArgs());
            }                     

        }
}

當我點擊按鈕 -

button.Click = buttonExport_Click

如何從Panel2.buttonExport_Click調用Panel1.ShowExport()

在Panel1中,您必須訂閱該事件:

pnl2.ShowExportClicked += new ShowExportReport(ShowExport);

您需要將Panel 1類中的事件ShowExportClicked的處理程序分配給Panel 2類對象。

     public partial class Panel1
        {
            Panel2 pnl2;
            public Panel1()
            {
               pnl2 = new Panel2();
               pnl2.ShowExportClicked += new ShowExportReport(ShowExport);    
            }

            public void ShowExport(object sender, EventArgs e)
            {
               .......
            }
        }
pnl2.ShowExportClicked += ShowExport;

在Form1上創建您的活動。 並在Form2中收聽事件。

Form1中:

public event EventHandler ShowExportChanged;

private void ShowExportChanged()
{
    var handler = ShowExportChanged;
    if(handler == null)
        return;

    handler(this, EventArgs.Empty);
}

public void ShowExport(object sender, EventArgs e)
{
  ShowExportChanged();
}

窗體2:

pnl1.ShowExportChanged+= new OnShowExportChanged(ShowExportChanged);

如何從Panel2.buttonExport_Click調用Panel1.ShowExport()?

通過在實例化form2時從form1傳遞(僅必要的)信息。

Form1.cs中:

void ShowForm2_Click()
{
    var form2 = new Form2();
    form2.ShowExportClicked += ShowExport;
    form2.Show();
}

現在從Form2,您只需在按鈕點擊時調用ShowExport

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM