【发布时间】:2019-11-24 17:32:17
【问题描述】:
我是 VB 新手,已经学习了大约三个月。我想输入一个文本框,例如。 “1234”并在第二个文本框中将其转换为“一、二、三、四”(带逗号)。没有按钮,只有两个文本框。这是我一直在尝试的代码,它不起作用。我收到错误消息:
对象引用未设置为对象的实例
如果我能得到一个很棒的简单解释,那么任何超级复杂的东西都会让我大吃一惊,让我更难学习。你们太棒了,我已经准备好学习了,谢谢。
Dim boxOne = txtNumber.Text.Split(" "c)
Private Sub TxtNumber_TextChanged(sender As Object, e As EventArgs) Handles txtNumber.TextChanged
For Each i As Integer In boxOne
If txtNumber.Text = "1" Then
lblMessage.Text = "one"
End If
If txtNumber.Text = "2" Then
lblMessage.Text = "two"
End If
If txtNumber.Text = "3" Then
lblMessage.Text = "three"
End If
If txtNumber.Text = "4" Then
lblMessage.Text = "four"
End If
If txtNumber.Text = "5" Then
lblMessage.Text = "five"
End If
If txtNumber.Text = "6" Then
lblMessage.Text = "six"
End If
If txtNumber.Text = "7" Then
lblMessage.Text = "seven"
End If
If txtNumber.Text = "8" Then
lblMessage.Text = "eight"
End If
If txtNumber.Text = "9" Then
lblMessage.Text = "nine"
End If
If txtNumber.Text = "10" Then
lblMessage.Text = "ten"
End If
Next
lblMessage.Text = boxOne
End Sub
【问题讨论】:
-
你在哪一行得到这个错误?上面示例中的第一行似乎完全在任何类之外。这是不正确的,因为当您尝试拆分 boxOne 时,可能尚未创建它。此外,下面的代码是不合逻辑的。您逐个字符地循环 boxOne 字符,并且对于每个字符,您使用计算出的文本更改相同的标签,因此您只能从最后一个字符中获取值,最后您覆盖最后一行中的所有内容。
-
For..Each的业务是什么? -
这就是问题所在,我不知道自己在做什么。错误在第一行。当我只使用 If 语句时,我可以让这些框工作,但就像你说的那样,它每次都会覆盖。我有点认为这是完全错误的,但我不知道如何改正。我应该使用数组还是什么?我只是在黑暗中拍摄,希望有些东西能奏效,还有很多东西要学。 for each 是在拆分后遍历每个数字。
-
请开启 Option Strict。这是一个两部分的过程。首先对于当前项目 - 在解决方案资源管理器中双击我的项目。选择左侧的编译。在 Option Strict 下拉列表中选择 ON。未来项目的第二个 - 转到工具菜单 -> 选项 -> 项目和解决方案 -> VB 默认值。在 Option Strict 下拉列表中选择 ON。这将使您避免在运行时出现错误。
-
For Each i As Integer In boxOneboxOne 中没有整数。 boxOne 是一个字符串数组。
标签: vb.net winforms error-handling textbox