繁体   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