我有4個ChildForm(1..4),它的基類是ParentForm。c#:如何識別哪個childform是一個按鈕(屬於一個parentForm)點擊?
ParentForm有一個按鈕。
有沒有辦法知道從哪個ChildForm實際點擊過的按鈕?
我有4個ChildForm(1..4),它的基類是ParentForm。c#:如何識別哪個childform是一個按鈕(屬於一個parentForm)點擊?
ParentForm有一個按鈕。
有沒有辦法知道從哪個ChildForm實際點擊過的按鈕?
是的,有點反思,你可以做到這一點。在事件處理程序的用戶對象sender
獲取父的類型:
Type ChildFormType = ((Button)sender).Parent.GetType();
然而,具有使用反射(查詢類型的系統)往往是不好的設計的標誌。某種Visitor Pattern實施方式,其中ParentForm
作爲摘要accept
方法可能是一種解決方案。
我明白,你有4個不同的類爲你的4種形式,所有派生自ParentForm。如果是這樣的話,我將實現ButtonClicked方法是這樣的:
private void button1_Click(object sender, EventArgs e)
{
// part common to all the forms (possibly void)
specific_button1_Click(sender, e);
// part common to all the forms (possibly void)
}
protected void specific_button1_Click(object sender, EventArgs e)
{
}
,然後在派生形式
在單擊事件處理程序,你可以這樣做覆蓋specific_button1_Click方法'如果((發件人爲按鈕).Parent == child1)'? –