Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 为什么这个visualbasic代码可以工作?_Vb.net - Fatal编程技术网

Vb.net 为什么这个visualbasic代码可以工作?

Vb.net 为什么这个visualbasic代码可以工作?,vb.net,Vb.net,它基本上是检查用户输入是否已经在ComboBox1中。如果是,则向用户发出警报。如果不是,则将其添加到组合框中 我没有得到的是“对于ComboBox1.Items循环中的每个StringIterador”。如何将项对象放置在字符串变量中?我知道字符串是对象,但是。。。你不能把一个随机对象放进一个字符串变量,对吗?此外,该字符串稍后用作返回“ComboBox1.GetItemText(StringIterador)”的项对象 Private子ComboBox1\u按键(发送方作为对象,e作为Key

它基本上是检查用户输入是否已经在ComboBox1中。如果是,则向用户发出警报。如果不是,则将其添加到组合框中

我没有得到的是“对于ComboBox1.Items循环中的每个StringIterador”。如何将项对象放置在字符串变量中?我知道字符串是对象,但是。。。你不能把一个随机对象放进一个字符串变量,对吗?此外,该字符串稍后用作返回“ComboBox1.GetItemText(StringIterador)”的项对象

Private子ComboBox1\u按键(发送方作为对象,e作为KeyPress事件参数)处理Combox1.KeyPress
变暗字符串作为字符串
如果e.KeyChar=ControlChars.Cr,则
如果是ComboBox1.Text“”,则
对于ComboBox1.项中的每个StringIterador
如果ComboBox1.GetItemText(StringIterador).Equals(ComboBox1.Text),则
MsgBox(“你是李斯塔人”)
出口接头
其他的
ComboBox1.Items.Add(ComboBox1.Text)
出口接头
如果结束
下一个
如果结束
如果结束
端接头

for Next语句()的文档要求“元素的数据类型必须能够将组元素的数据类型转换为它。”因此,只要每个项都可以转换为字符串,该代码就可以工作。它不是将item对象存储在字符串中,而是将item转换为字符串并存储该字符串

我还没有对此进行测试,但我怀疑,如果在无法转换为字符串的项中存储对象,则会引发运行时异常。当然,由于代码每次都在添加ComboBox1.Text,因此该代码只会添加文本项,因此不会设置字符串转换无效的情况


以同样的方式,GetItemText()被记录为“如果未指定DisplayMember属性,则GetItemText返回的值是该项的ToString方法的值。否则,该方法返回DisplayMember属性中为item参数中指定的对象指定的成员的字符串值。”因此,它可能正在工作,因为添加的对象将返回字符串。如果将复杂对象添加到组合框中,您可能会看到显示的对象类型(从内存中),这是ToString()的回退结果。

Put
Option Strict On
在文件开头或整个项目中settings@Fabio:这是一个值得加1的评论
Private Sub ComboBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox1.KeyPress
    Dim StringIterador As String
    If e.KeyChar = ControlChars.Cr Then
        If ComboBox1.Text <> "" Then
            For Each StringIterador In ComboBox1.Items
                If ComboBox1.GetItemText(StringIterador).Equals(ComboBox1.Text) Then
                    MsgBox("ya está en la lista")
                    Exit Sub
                Else
                    ComboBox1.Items.Add(ComboBox1.Text)
                    Exit Sub
                End If
            Next
        End If
    End If
End Sub