[英]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.