簡體   English   中英

來自多個句柄的Sender.Gettype

[英]Sender.Gettype from multiple handles

我有處理多個事件的代碼。 僅供參考-我使用Devexpress組件。 我有兩個項目,一個Lookupedit和一個GridLookupEdit,由相同的代碼處理。 我正在嘗試執行以下操作:

    Dim type = sender.GetType()

    Select Case DirectCast(sender, Type).Name
        Case "mgrLUE"
            log("View metrics for manager: " & mgrLUE.Properties.GetDisplayText(mgrLUE.EditValue), Me.Name)
        Case "sectLUE"
            log("View metrics for section: " & sectGLUE.Properties.GetDisplayText(sectGLUE.EditValue), Me.Name)
    End Select

在選擇案例行時出現錯誤。 我無法弄清楚如何動態獲取類型以將其直接轉換為它。 在這種情況下,類型將為DevExpress.XtraEditors.GridLookUpEdit和DevExpress.XtraEditors.LookUpEdit。 我已經嘗試尋找解決方案,但是我嘗試的所有方法都失敗了。

感謝您的幫助。

強制轉換不能動態完成,因為它的唯一目的是讓編譯器知道您期望某個對象屬於某種類型。 這是必要的,以便編譯器在您嘗試訪問該對象時知道該對象包含哪些成員。

我應該提到,VB.NET具有稱為后期綁定的功能,該功能允許您通過查找要訪問的成員在運行時是否存在來訪問包裝在Object中的類型的成員。 但是, 建議使用后期綁定,因為這樣很容易出錯並破壞代碼。

現在,針對您的問題:如果對象屬於某種類型,或者它繼承自該類型,則可以進行轉換。 由於我猜您正在使用的是控件(已放置在窗體上),它們都應該繼承自System.Windows.Forms.Control ,因此您可以將它們轉換為包含基本屬性Name控件:

Select Case DirectCast(sender, Control).Name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM