首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自多个句柄的Sender.Gettype

来自多个句柄的Sender.Gettype
EN

Stack Overflow用户
提问于 2018-05-18 00:26:44
回答 1查看 156关注 0票数 0

我有处理多个事件的代码。仅供参考-我使用Devexpress组件。我有两个项目,一个是Lookupedit,一个是GridLookupEdit,它们是由相同的代码处理的。我正在尝试做一些类似以下的事情:

代码语言:javascript
复制
    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

我在select case行遇到错误。我想不出如何动态地获取类型,以便能够直接转换到它。在本例中,类型将为DevExpress.XtraEditors.GridLookUpEdit和DevExpress.XtraEditors.LookUpEdit。我试着寻找解决方案,但我尝试的一切都失败了。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-05-18 01:13:44

强制转换不能动态完成,因为它的唯一目的是让编译器知道您希望对象是某种类型。这是必要的,这样当您尝试访问对象时,编译器才能知道该对象包含哪些成员。

值得一提的是,VB.NET有一个称为后期绑定的特性,它允许您通过查看要访问的成员在运行时是否存在来访问包装在Object中的类型的成员。但是,使用后期绑定时,不推荐使用,因为它很容易出错并破坏您的代码。

现在,对于您的问题:如果一个对象是某种类型,或者如果它继承自该类型,则可以进行强制转换。由于我猜测您使用的是控件(放在窗体上),它们都应该从System.Windows.Forms.Control继承,因此您可以将它们强制转换为包含基属性Name的控件

代码语言:javascript
复制
Select Case DirectCast(sender, Control).Name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50396336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档