所以我有一個非常簡單的問題。我有一個接收2個參數的函數。下面是函數的定義:引用未定義的屬性
private void Document_TextChanged(object sender, EventArgs e)
我知道發件人對象將始終有一個名爲文本屬性,但編譯器顯然不知道這一點。有沒有一種好的方法可以讓我引用這個屬性而不會收到編譯器錯誤?顯然sender.property不起作用。
所以我有一個非常簡單的問題。我有一個接收2個參數的函數。下面是函數的定義:引用未定義的屬性
private void Document_TextChanged(object sender, EventArgs e)
我知道發件人對象將始終有一個名爲文本屬性,但編譯器顯然不知道這一點。有沒有一種好的方法可以讓我引用這個屬性而不會收到編譯器錯誤?顯然sender.property不起作用。
使用演員。如果你總是確保發件人是類型SOMETYPE的,你可以簡單地使用
SomeType senderAsSomeType = (SomeType)sender;
如果你不能確定是什麼類型,你可以使用as
運營商投的值,如果它的類型是SOMETYPE的,或得到null
如果不是:
SomeType senderAsSomeType = sender as SomeType;
if (senderAsSomeType != null) {
//do something
}
另一種選擇是,如果有是幾班的機會,像這樣的文本屬性使用動態:
dynamic textProperty = sender;
Console.WriteLine(textProperty.Text);
是什麼文件?什麼樣的? – Sadique
將發件人轉換爲正確的類型。假設你知道這個事件是由一個按鈕觸發的,你可以這樣做:'((Button)sender).Text' – DarkBee
Document是窗體中的文本框。這裏定義:http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx – Nick