[英]Windows Forms - using public event to subscribe Form to a user control event
在處理事件和/或委托時遇到問題。 我看到了非常類似的問題,但實際的實現方式仍然不清楚。 因此,請在回答時提供更具體的信息,這樣我可以嘗試並最終通過我知道的代碼來了解創建/處理公共/自定義事件的工作方式。
我所擁有的是一個User Control
,它只是一個文本框和一個按鈕,我需要使用文本框中的值來更改數據庫中的記錄。 我將這種控件用於多種形式,因此我需要確切地知道我正在使用哪個實體並能夠調用它自己的save方法。 如果我可以使用User Control
按鈕的click
事件,然后調用當前表單的Save()
方法,則所有操作將變得更加容易。
這是我的用戶控件:
namespace UserControls.CommonControls
{
public delegate void ClickMe(string message);
public partial class ChangeCode : UserControl
{
public event ClickMe CustomControlClickMe;
public ChangeCode()
{
InitializeComponent();
}
private void btnChange_Click(object sender, EventArgs e)
{
if (CustomControlClickMe != null)
CustomControlClickMe("Hello");
//ToDo fill
//MessageBox.Show("To Do: Write the busieness logic.");
}
public void SetTextBoxMask(MaskedTextBox txtBox)
{
txtChange.Mask = txtBox.Mask;
}
}
}
我將其發布為最后一次嘗試,以實現我所需的東西。
這是需要使用User Control
的Click
事件的一種形式,更具體地說是Constructor
因為如果我理解正確的話,那是我必須訂閱該事件的地方:
public MaterialEdit()
{
InitializeComponent();
UserControls.CommonControls.ChangeCode. += new ClickMe(button2_Click);
}
UserControls.CommonControls.ChangeCode
這是我到達User Control
它名為ChangeCode
。
從粘貼的內容來看,尚不清楚您是否將ChangeCode
控件添加到了表單中。 要使用控件及其事件和屬性,首先必須為其創建新實例並將其添加到表單中。 這個完成了:
只有這樣,您才能處理該對象的事件。 假設您將ChangeCode
控件拖放到窗體上,並且Visual Studio將其命名為ChangeCode1
。 您將這樣的處理附加到CustomControlClickMe
事件:
ChangeCode1.CustomControlClickMe += new ClickMe(button2_Click);
您粘貼的代碼( UserControls.CommonControls.ChangeCode. += new ClickMe(button2_Click);
)由於以下原因不正確:
.
這使其成為不正確的分配目標( UserControls.CommonControls.ChangeCode.
) .CustomControlClickMe
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.