C#去了great lengths to ensure that you cannot "fire" an event,例如:C#:從對象外部觸發事件的替代方案是什麼?
form.FormClosed(this, new FormClosedEventArgs(CloseReason.UserClosing));
button.Click(this, new EventArgs());
customer.AddressChanged(this, new EventArgs());
不編譯,因爲你不能開除事件這種方式。
這似乎是語言設計師的一個有意識的決定。他們似乎故意試圖阻止「不良行爲」。
我正試圖找到打算替換。
實際例子:
void ShowPopup(Form form)
{
ToolStripDropDown toolDrop = new ToolStripDropDown();
ToolStripControlHost toolHost = new ToolStripControlHost(form);
toolHost.Margin = new Padding(0);
toolDrop.Padding = new Padding(0);
toolDrop.Items.Add(toolHost);
toolDrop.Closed += toolDrop_Closed;
toolDrop.Show(screenLocation);
}
void toolDrop_Closed(object sender, ToolStripDropDownClosedEventArgs e)
{
//The form's FormClosed event doesn't fire when shown as a popup
//Fire the event manually
form.FormClosed(this, new FormClosedEventArgs(CloseReason.UserClosing));
}
如果我不應該火在對象的外部事件 - 什麼是意來取代它的技術?
如果沒有預期的替代觸發事件,有沒有解釋我如何應該處理這種情況的任何物品,書籍,或Channel 9視頻?
我不認爲這有什麼關係。 NET,本身;而是一個對象成員可訪問性的函數。 – 2011-12-29 21:05:54