首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VB.NET中更改未知对象的属性

在VB.NET中更改未知对象的属性
EN

Stack Overflow用户
提问于 2009-07-25 11:19:31
回答 5查看 1.9K关注 0票数 1

我有一个sub,当14个ComboBoxes的索引发生变化时进行处理。我能够强制转换事件的发送者,并从那里获取属性。但是,在此之后,我希望能够更改实际发送者的属性,而不是强制转换发送者的属性。我该怎么做呢?

当前代码:

代码语言:javascript
运行
复制
Private Sub ComboBoxIndexChange(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged [etc]
        Dim myComboBox As ComboBox = sender

        Select Case myComboBox.Text
            Case "Will"
                Me.Controls(myComboBox.Name).Text = "555-555-555"
            Case "Bob"
                Me.Controls(myComboBox.Name).Text = "555-124-1234"
            [etc]
        End Select
    End Sub
End Class

如您所见,我目前正在尝试使用

代码语言:javascript
运行
复制
Me.Controls(myComboBox.Name).Text

但是我得到一个错误: object reference没有设置为对象的实例。

我能做什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-25 11:32:29

事件处理程序中的sender参数(通常)将包含对引发事件的对象的引用。如果是ComboBox控件的SelectedIndexChanged事件,则更改其SelectedIndex属性的将是ComboBox。因此,在上面的代码示例中,myComboBox引用的是引发事件的ComboBox

需要说明的是:如果您在ComboBox控件的下拉列表中选择一项,以便它引发SelectedIndexChanged事件,则事件处理程序的发送方参数将是该ComboBox,而不是它的副本。对于所有引用类型都是如此。

如果它是一个值类型,引发事件,那将是一个完全不同的故事,但这是非常罕见的情况(当涉及到窗体上的控件时,它从来都不是这样的)。

票数 2
EN

Stack Overflow用户

发布于 2009-07-25 11:31:29

Text是一种引用类型,因此如果直接赋值给myComboBox变量的ComboBox属性,它将更新控件。

票数 1
EN

Stack Overflow用户

发布于 2009-07-27 15:17:19

这应该是可行的:

代码语言:javascript
运行
复制
 Dim ctl As Control
 Dim cmb As ComboBox

 For Each ctl In Me.Controls
   If sender Is ctl Then
     cmb = ctl
     cmb.Text = "string"
     End If
   Next ctl

您可以在cmd.Text = " string“的位置添加特定的字符串赋值代码。通过分配cmb,您可以使用特定的组合框属性,而不是通用控件属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1181891

复制
相关文章

相似问题

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