今天有朋友问起窗体间如何传值,才想起来找到以前写的文章。供大家参考参考,多年前的文章
Public Class Form_Load
'启动窗体
'项目总结[3]--浅谈窗体间传值,并提供实例
'项目总结[2]--浅谈如何设置菜单,因为在整理当中
'监于有些人提出如何进行窗体间传递变量,和如何查询问题,
'特地写了如下例子, 供大家参考
Public Shared common_string As String = " Form1 String"
<STAThread()> Public Shared Sub Main(ByVal args() As String)
Dim a1 As Sample1Form1 = New Sample1Form1()
Application.Run(a1)
End Sub
End Class
'2003-11-3
'通过公共变量在两个窗体间传递参数
'或者通过传递窗体来取的变量
'Author:MeetWeb
Public Class Sample1Form1
Inherits System.Windows.Forms.Form
Private Sub Sample1Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Label1.Text = Form_Load.common_string
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'方法一:直接把Form对象传递到Form2
Dim f2 As Sample1Form2 = New Sample1Form2(Me)
f2.Show() '显示Form2
Me.Hide() '隐藏Form1
End Sub
End Class
'2003-11-3
'通过公共变量在两个窗体间传递参数
'或者通过传递窗体来取的变量
'Author:MeetWeb
Public Class Sample1Form2
Inherits System.Windows.Forms.Form
Private f1 As Sample1Form1 '定义smapleform1
Public Sub New(ByVal f1 As Sample1Form1)
'把smapleform1当变量传递给smaple1form2
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
Me.f1 = f1
End Sub
Private Sub Sample1Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Label1.Text = Form_Load.common_string
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'改变公共变量
Form_Load.common_string = "Form2'String"
'改变Form1's Label显示
f1.Label1.Text = Form_Load.common_string
'直接操作Form1的所有控件或者是公共变量
Me.Close()
'重新显示Form1
Me.f1.Show()
End Sub
End Class
' 2003-7-1
' 窗体间相互传递变量应用实例2
'通过查询窗体改变主窗体的DataGrid查询
' Author MeetWeb
Public Class Sample2Form1
Inherits System.Windows.Forms.Form
Public myFormFather As Sample2Form2 '定义主窗体
Private Sub Sample2Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'主窗体实例
myFormFather = Me.Owner
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim findstring As String = "CustName='" + Me.TextBox1.Text + "'"
'直接引用主窗体的dataview对象进行数据查询
myFormFather.dataview1.RowFilter = findstring
End Sub
End Class
' 2003-7-1
' 窗体间相互传递变量应用实例2[如果需要源码,请留下Email]
' Author MeetWeb
Public Class Sample2Form2
Inherits System.Windows.Forms.Form
Private WithEvents myDataSet As DataSet
Public dataview1 As DataView
Public Binding1 As BindingManagerBase
Private Sub Sample2Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SetUp()
End Sub
#Region "Get DataBase"
Private Sub SetUp()
MakeDataSet()
'使用dataview绑定数据
dataview1 = New DataView(Me.myDataSet.Tables(0))
Binding1 = Me.BindingContext(dataview1)
'致DataGrid数据源为DataView,目的是为了查询做准备工作
myDataGrid.DataSource = Me.dataview1
AddCustomDataTableStyle()
End Sub
Private Sub AddCustomDataTableStyle()
'设置DataGrid样式,具体请查看帮助
Dim ts1 As DataGridTableStyle
ts1 = New DataGridTableStyle()
ts1.MappingName = "Customers"
' Set other properties.
ts1.AlternatingBackColor = Color.LightGray
Dim boolCol As DataGridColumnStyle
boolCol = New DataGridBoolColumn()
boolCol.MappingName = "Current"
boolCol.HeaderText = "IsCurrent Customer"
boolCol.Width = 150
ts1.GridColumnStyles.Add(boolCol)
Dim TextCol As DataGridColumnStyle
TextCol = New DataGridTextBoxColumn()
TextCol.MappingName = "custName"
TextCol.HeaderText = "Customer Name"
TextCol.Width = 250
ts1.GridColumnStyles.Add(TextCol)
Me.myDataGrid.RowHeaderWidth = 50 'use if no tablestyle
myDataGrid.TableStyles.Add(ts1)
End Sub
Private Sub MakeDataSet()
'新建立DataSet对象,并把数据录入
' Create a DataSet.
myDataSet = New DataSet("myDataSet")
' Create two DataTables.
Dim tCust As DataTable
tCust = New DataTable("Customers")
' Create two columns, and add them to the first table.
Dim cCustID As DataColumn
cCustID = New DataColumn("CustID", GetType(System.Int32))
Dim cCustName As DataColumn
cCustName = New DataColumn("CustName")
Dim cCurrent As DataColumn
cCurrent = New DataColumn("Current", GetType(System.Boolean))
tCust.Columns.Add(cCustID)
tCust.Columns.Add(cCustName)
tCust.Columns.Add(cCurrent)
' Add the tables to the DataSet.
myDataSet.Tables.Add(tCust)
Dim newRow1 As DataRow
Dim i As Integer
i = 1
Do While (i < 4)
newRow1 = tCust.NewRow
newRow1("custID") = i
' Add the row to the Customers table.
tCust.Rows.Add(newRow1)
i = (i + 1)
Loop
' Give each customer a distinct name.
tCust.Rows(0)("custName") = "Alpha"
tCust.Rows(1)("custName") = "Beta"
tCust.Rows(2)("custName") = "Omega"
' Give the Current column a value.
tCust.Rows(0)("Current") = True
tCust.Rows(1)("Current") = True
tCust.Rows(2)("Current") = False
'set topleft corner point so we can locate the toprow
End Sub
#End Region
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FormChild As Sample2Form1 = New Sample2Form1() '定义查询窗口
FormChild.Owner = Me '把主窗体赋予查询窗体的Owner对象
FormChild.Show() '显示查询窗体
End Sub
End Class