读书人

窗体间怎么传递变量呢

发布时间: 2012-08-15 16:57:16 作者: rapoo

窗体间如何传递变量呢?
我的设计有N个窗体,每个窗体上有个按纽:
Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim theForm = New desinform
theForm.ShowDialog()
End Sub

每个窗体都能打开显示desinform窗体,打开后,我的desinform窗体需要获得对其打开的窗体的一个变量的值,这样我该如何传递呢?

[解决办法]
不需要用全局变量,如果你需要获得N个窗体里面的变量,岂不是要设N个全局变量。没有这个必要。
这个办法,你可以试试。
在窗体设计代码里面加构造函数
dim NeedS as 变量类型
sub new(sender as 变量类型)
needs=sender
end sub
在button_click 里面
dim frm as new designfrm(赋值变量)
在designfrm类里面就可以通过needs得到你需要的。
[解决办法]
那么麻烦干嘛。三楼正解。
重写 new 即可

VB.NET code
Public Class Form1    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Using form As New desinform("我要传值")            form.ShowDialog()        End Using    End SubEnd ClassPublic Class desinform    Inherits System.Windows.Forms.Form    Dim b As Object    Public Sub New(ByVal a As Object)        InitializeComponent()        b = a    End Sub    Private Sub desinform_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Console.WriteLine(b.ToString)    End Sub    'Form 重写 Dispose,以清理组件列表。    <System.Diagnostics.DebuggerNonUserCode()> _    Protected Overrides Sub Dispose(ByVal disposing As Boolean)        Try            If disposing AndAlso components IsNot Nothing Then                components.Dispose()            End If        Finally            MyBase.Dispose(disposing)        End Try    End Sub    'Windows 窗体设计器所必需的    Private components As System.ComponentModel.IContainer    '注意: 以下过程是 Windows 窗体设计器所必需的    '可以使用 Windows 窗体设计器修改它。    '不要使用代码编辑器修改它。    <System.Diagnostics.DebuggerStepThrough()> _    Private Sub InitializeComponent()        Me.SuspendLayout()        '        'desinform        '        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font        Me.ClientSize = New System.Drawing.Size(292, 266)        Me.Name = "desinform"        Me.Text = "desinform"        Me.ResumeLayout(False)    End Sub End Class 

读书人网 >VB Dotnet

热点推荐