希望你能看到我错过了什么。
我尝试从公共类globalv
public shared ip() as string
我删除了这个课程,但仍然收到此错误..
我确实希望我的变量是“全局的”,所以每次我需要它时都不会创建一个新实例。所以我尝试将它放在顶部以使其在表单中全局化。
Public Class Form1
#Region "variables"
Delegate Sub SetTextCallback(ByVal [text] As String)
Dim x As New SetTextCallback(AddressOf ReceivedText)
Dim stringOfRtb As String = rtb.Text
Dim incoming() As String
Dim ip() As String
#End Region
Private Sub btnSaveIP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveIP.Click
incoming = stringOfRtb.Split(ControlChars.CrLf.ToCharArray) ''vcrlf splitter
ip = incoming(3).Split(":"c)
txtSend.Text = "set ip local " & ip(1)
End sub
Private Sub btnSettings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSettings.Click
ip = incoming(3).Split("="c)
txtIP.Text = ip(1)
End sub
你能看到什么问题吗?它在此之前一直在工作.. :(
答案 0 :(得分:0)
如果您正在尝试创建一个“全局”变量以供整个应用程序使用,那么在模块而不是类中更好。只需在应用程序的根命名空间中创建一个名为“Globals”的模块,然后声明变量Public ip() As String
(并为其赋值),然后您就可以从该应用程序中调用它。
您的问题实际上似乎即将到来,因为您的某些值分配给ip()的事实并未提供对数组中哪个元素的引用(例如ip = incoming(3).Split(":"c)
应该类似于ip(1) = incoming(3).Split(":"c)
答案 1 :(得分:0)
此字段声明:
Dim stringOfRtb As String = rtb.Text
将stringOfRtb
设置为创建表单的时间的rtb.Text
,的值。 a)rtb
尚未初始化,或者b)rtb.Text
此时可能Nothing
。它永远不会将自己更新为任何其他值,因此(对于b):
incoming = stringOfRtb.Split(ControlChars.CrLf.ToCharArray)
将尝试在不存在的字符串上调用Split
。
这些是我最好的猜测 - 但如果两者都不对,你需要学习 debug 。
我假设(对于b)您在按下保存按钮时出现错误(这是一个假设,因为您没有告诉我们您的&# #39;重新触发错误)。
如果是这种情况,那么你需要在btnSaveIP_Click
方法的第一行设置一个断点,然后按下按钮 - 然后你可以检查每个变量的状态并找出哪个一个是Nothing
以及何时。