Vb.net 在加载时声明全局(或公共?)变量

Vb.net 在加载时声明全局(或公共?)变量,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,整个夏天我都在努力提高VisualBasic的流利程度,所以我仍然在为下一节VisualBasic课做准备。我的老师检查了变量,但仅限于局部范围 我到处都找过了,但找不到我真正需要的东西。我正在制作一个闹钟,我有这个代码来填充分钟数组和小时数组 Public Class Form1 Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

整个夏天我都在努力提高VisualBasic的流利程度,所以我仍然在为下一节VisualBasic课做准备。我的老师检查了变量,但仅限于局部范围

我到处都找过了,但找不到我真正需要的东西。我正在制作一个闹钟,我有这个代码来填充分钟数组和小时数组

Public Class Form1 
    Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.clockTimer.Interval = 1 * 1000
        Me.clockTimer.Enabled = True


        Dim hourArray(0 To 11) As String
        For i As Integer = 1 To 12
            If i.ToString.Length < 2 Then
                hourArray(i - 1) = "0" & i
            Else
                hourArray(i - 1) = i
            End If
        Next

        Dim minuteArray(0 To 59) As String
        For i As Integer = 0 To 59
            If i.ToString.Length < 2 Then
                minuteArray(i) = "0" & i
            Else
                minuteArray(i) = i
            End If
        Next

        hourLabel.Text = hourArray(0)
        minuteLabel.Text = minuteArray(0)

    End Sub
公共类表单1
Public Sub Form1_Load(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
Me.clockTimer.Interval=1*1000
Me.clockTimer.Enabled=真
昏暗的hourArray(0到11)作为字符串
对于i,整数=1到12
如果i.ToString.Length<2,则
hourArray(i-1)=“0”和i
其他的
hourArray(i-1)=i
如果结束
下一个
以字符串形式显示的暗细节(0到59)
对于i,作为整数=0到59
如果i.ToString.Length<2,则
分钟数(i)=“0”和i
其他的
分钟数(i)=i
如果结束
下一个
hourLabel.Text=hourArray(0)
minuteLabel.Text=minuteArray(0)
端接头
(注意:添加“0”只是为了让时钟显示的是“01”而不是“1”。)

现在,我在表单加载(这个项目中只有一个表单)上实现了这一点,但它没有全局或公共范围。我希望能够在程序的后面访问
hourArray
minuteArray
,但在表单加载时仍然可以这样做。我该怎么做?另外,我要描述的变量范围是什么?(即整个表格的范围)


谢谢。

你没有告诉我你的班级结构。无论如何。将变量hourArray和minuteArray声明为public。在类的开头声明它们,并在form load方法中初始化它们

编辑添加了代码示例

Public Class Form1
    Dim hourArray(0 To 11) As String 'Declaration here
    Dim minuteArray(0 To 59) As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For i As Integer = 1 To 12
            If i.ToString.Length < 2 Then
                hourArray(i - 1) = "0" & i
            Else
                hourArray(i - 1) = i
            End If
        Next
        For i As Integer = 0 To 59
            If i.ToString.Length < 2 Then
                minuteArray(i) = "0" & i
            Else
                minuteArray(i) = i
            End If
        Next
    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
        hourArray(1) = "x"
        minuteArray(1) = "y"
    End Sub
End Class
公共类表单1
Dim hourArray(0到11)作为字符串“声明”
以字符串形式显示的暗细节(0到59)
私有子表单1_Load(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
对于i,整数=1到12
如果i.ToString.Length<2,则
hourArray(i-1)=“0”和i
其他的
hourArray(i-1)=i
如果结束
下一个
对于i,作为整数=0到59
如果i.ToString.Length<2,则
分钟数(i)=“0”和i
其他的
分钟数(i)=i
如果结束
下一个
端接头
私有子RadioButton1\u CheckedChanged(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理RadioButton1.CheckedChanged
hourArray(1)=“x”
分钟数(1)=“y”
端接头
末级

希望能有帮助

既然你学会了,我就告诉你把它们放在哪里

但是以后,您应该删除数组,直接花时间,在需要时用0填充它,所有这些都不需要数组

像这样把这些放在班级和小组之间

 Public Class Form1 
     private hourArray(0 To 11) As String
     private minuteArray(0 To 59) As String
     Public Sub Form1_Loa
Public Class Form1  
    
    Dim hourArray(0 To 11) As String   'These variables are private to your Class
    Dim minuteArray(0 To 59) As String 

    Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
        Me.clockTimer.Interval = 1 * 1000  
        Me.clockTimer.Enabled = True 

        For i As Integer = 1 To 12 
            If i.ToString.Length < 2 Then 
                hourArray(i - 1) = "0" & i 
            Else 
                hourArray(i - 1) = i 
            End If 
        Next 

        For i As Integer = 0 To 59 
            If i.ToString.Length < 2 Then 
                minuteArray(i) = "0" & i 
            Else 
                minuteArray(i) = i 
            End If 
        Next 

        hourLabel.Text = hourArray(0) 
        minuteLabel.Text = minuteArray(0) 

    End Sub 
如果要在外部使用这些数组,应该创建一个公共属性,如

Public readonly Property hour As String()
    Get
         return hourArray
    End Get
End Property
你在描述

从以上链接:

为方便起见,单术语模块级别同样适用于模块、类和结构。您可以通过将声明语句放置在任何过程或块之外,但在模块、类或结构中,来声明此级别的元素

在模块级别进行声明时,选择的访问级别决定了范围。包含模块、类或结构的命名空间也会影响作用域

为其声明私有(Visual Basic)访问级别的元素可用于该模块中的每个过程,但不可用于不同模块中的任何代码。如果不使用任何访问级别关键字,则模块级别的Dim语句默认为Private。但是,通过在Dim语句中使用Private关键字,可以使范围和访问级别更加明显

所以在你的情况下,我会这样做

 Public Class Form1 
     private hourArray(0 To 11) As String
     private minuteArray(0 To 59) As String
     Public Sub Form1_Loa
Public Class Form1  
    
    Dim hourArray(0 To 11) As String   'These variables are private to your Class
    Dim minuteArray(0 To 59) As String 

    Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
        Me.clockTimer.Interval = 1 * 1000  
        Me.clockTimer.Enabled = True 

        For i As Integer = 1 To 12 
            If i.ToString.Length < 2 Then 
                hourArray(i - 1) = "0" & i 
            Else 
                hourArray(i - 1) = i 
            End If 
        Next 

        For i As Integer = 0 To 59 
            If i.ToString.Length < 2 Then 
                minuteArray(i) = "0" & i 
            Else 
                minuteArray(i) = i 
            End If 
        Next 

        hourLabel.Text = hourArray(0) 
        minuteLabel.Text = minuteArray(0) 

    End Sub 
公共类表单1
Dim hourArray(0到11)作为字符串“这些变量对您的类是私有的”
以字符串形式显示的暗细节(0到59)
Public Sub Form1_Load(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
Me.clockTimer.Interval=1*1000
Me.clockTimer.Enabled=真
对于i,整数=1到12
如果i.ToString.Length<2,则
hourArray(i-1)=“0”和i
其他的
hourArray(i-1)=i
如果结束
下一个
对于i,作为整数=0到59
如果i.ToString.Length<2,则
分钟数(i)=“0”和i
其他的
分钟数(i)=i
如果结束
下一个
hourLabel.Text=hourArray(0)
minuteLabel.Text=minuteArray(0)
端接头

进展顺利。我建议您进一步了解VB.NET“访问类型”。这会让你的基本面变得清晰。你可以通过这个快乐的编码。