我问过在表单之间传递变量并获得答案。我用一个简单的表单测试了它们,它工作。我创建了一个全局变量类和一个公共变量,它似乎工作。但是当我在我的实际程序中尝试相同的东西时。它不工作,我不明白为什么。传递变量不起作用
基本上我有一个窗体显示库存。每个项目都有一个vatid字段。当我点击一个按钮时,我希望它打开增值税表格,并通过从数据网格中选择不同的增值税号码。那么当我点击一个选择按钮,增值编号必须返回到已经打开的库存屏幕并更新该项目的vatid文本框。
这个画面我想点击旁边的按钮vatid,它必须打开我从中选择一槽型代码此屏幕增值税形式
在这里
Imports MySql.Data.MySqlClient
Public Class frmviewinventory
Dim mysqlconn As MySqlConnection
Dim command As MySqlCommand
Dim dbdataset As New DataTable
'Public recvatid As Integer
Private Sub load_table() 'routine to refresh database and reload datagrid
mysqlconn = New MySqlConnection
mysqlconn.ConnectionString = "server=localhost;userid=root;password=1234;database=fabpos"
Dim reader As MySqlDataReader
Dim sda As New MySqlDataAdapter
' Dim dbdataset As New DataTable
Dim bsource As New BindingSource
Try
mysqlconn.Open()
Dim query As String
query = "select * from fabpos.inventory"
command = New MySqlCommand(query, mysqlconn)
sda.SelectCommand = command
sda.Fill(dbdataset)
bsource.DataSource = dbdataset
dginventory.DataSource = bsource
sda.Update(dbdataset)
reader = command.ExecuteReader
mysqlconn.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
mysqlconn.Dispose()
End Try
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btnloadgrid.Click
dbdataset.Clear()
load_table()
End Sub
Private Sub btnclose_Click(sender As System.Object, e As System.EventArgs) Handles btnclose.Click
Me.Close()
End Sub
Private Sub frmviewinventory_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
optdescription.Checked = True
txtsearch.Select()
load_table()
dginventory.Columns.Item(0).Width = 50
dginventory.Columns.Item(1).Width = 50
dginventory.Columns.Item(2).Width = 90
dginventory.Columns.Item(3).Width = 300
End Sub
Private Sub txtsearch_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtsearch.TextChanged
Dim dv As New DataView(dbdataset)
If optstockcode.Checked = True Then
dv.RowFilter = String.Format("stockcode like '%{0}%'", txtsearch.Text)
dginventory.DataSource = dv
ElseIf optbarcode.Checked = True Then
dv.RowFilter = String.Format("barcode like '%{0}%'", txtsearch.Text)
dginventory.DataSource = dv
ElseIf optdescription.Checked = True Then
dv.RowFilter = String.Format("description like '%{0}%'", txtsearch.Text)
dginventory.DataSource = dv
ElseIf optbin.Checked = True Then
dv.RowFilter = String.Format("binlocation like '%{0}%'", txtsearch.Text)
dginventory.DataSource = dv
End If
'dv.RowFilter = String.Format("stockcode like '%{0}%'", txtsearch.Text)
'dginventory.DataSource = dv
End Sub
Private Sub optstockcode_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles optstockcode.CheckedChanged
txtsearch.Select()
End Sub
Private Sub optbarcode_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles optbarcode.CheckedChanged
txtsearch.Select()
End Sub
Private Sub optdescription_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles optdescription.CheckedChanged
txtsearch.Select()
End Sub
Private Sub optbin_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles optbin.CheckedChanged
txtsearch.Select()
End Sub
Private Sub frmviewinventory_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If (e.KeyCode = Keys.Escape) Then
Me.Close()
End If
End Sub
Private Sub dginventory_SelectionChanged(sender As Object, e As EventArgs) Handles dginventory.SelectionChanged
Dim i As Integer
i = dginventory.CurrentRow.Index
Me.txtid.Text = dginventory.Item(0, i).Value.ToString
Me.txtstockcode.Text = dginventory.Item(1, i).Value.ToString
Me.txtbarcode.Text = dginventory.Item(2, i).Value.ToString
Me.txtdescription.Text = dginventory.Item(3, i).Value.ToString
Me.txtrecname.Text = dginventory.Item(4, i).Value.ToString
Me.txtvatid.Text = dginventory.Item(5, i).Value.ToString
Me.txtcostexcl.Text = dginventory.Item(6, i).Value.ToString
Me.txtvatamt.Text = dginventory.Item(7, i).Value.ToString
Me.txtcostincl.Text = dginventory.Item(8, i).Value.ToString
Me.txtmu.Text = dginventory.Item(9, i).Value.ToString
Me.txtspexcl.Text = dginventory.Item(10, i).Value.ToString
Me.txtspincl.Text = dginventory.Item(11, i).Value.ToString
Me.txtprofit.Text = dginventory.Item(12, i).Value.ToString
Me.txtgp.Text = dginventory.Item(13, i).Value.ToString
End Sub
Private Sub btngetvat_Click(sender As Object, e As EventArgs) Handles btngetvat.Click
Dim getvat As New frmvat
getvat.Show()
getvat.btnselect.Visible = True
End Sub
End Class
增值税屏幕在这里,应该是全局变量传递回盘点画面 vat form 代码
Private Sub dgvat_SelectionChanged(sender As Object, e As EventArgs) Handles dgvat.SelectionChanged
Dim i As Integer
i = dgvat.CurrentRow.Index
Me.txtvatid.Text = dgvat.Item(0, i).Value.ToString
Me.txtvatcode.Text = dgvat.Item(1, i).Value.ToString
Me.txtvatdescription.Text = dgvat.Item(2, i).Value.ToString
Me.txtvatpercentage.Text = dgvat.Item(3, i).Value.ToString
globalvariables.vatidvariable = Convert.ToInt32(txtvatid.Text)
End Sub
Private Sub btnselect_Click(sender As Object, e As EventArgs) Handles btnselect.Click
globalvariables.vatidvariable = Convert.ToInt32(txtvatid.Text)
frmviewinventory.txtvatid.Text = globalvariables.vatidvariable
Me.Close()
End Sub
我的公共类在这里
Public Class globalvariables
Public Shared vatidvariable As String
Public Shared testvariable As String
End Class
我已经试过这一个简单的应用程序只有2个表格和文本框和它完美的作品。但是在我的实际程序中并没有。并且vatid仍然保持不变。
我已经检查了文本bosex的只读属性和启用属性,它们都很好。即时变灰色。
任何帮助将不胜感激。
请阅读[问]并参加[旅游]。第一个可以帮助避免未来的问题DV;第二个解释如何工作,如你应该做什么,当你得到一个答案 – Plutonix