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