私はフォーム間の変数の受け渡しと回答の取得について質問しました。私は単純なフォームでそれらをテストし、それは働いた。私はグローバル変数クラスとパブリック変数を作成し、それは動作するように見えました。しかし、私は実際のプログラムで同じことを試みました。それは動作しないと私は理由を把握することはできません。渡し変数が動作しない
基本的に私は在庫を表示するフォームを持っています。各項目には大文字のフィールドがあります。ボタンをクリックすると、VATフォームが開き、別のVAT IDがDataGridから選択されます。 VAT IDがすでに開いている在庫画面に戻ってその項目の大まかなテキストボックスを更新する必要がある選択ボタンをクリックすると、この画面の
私は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
私のパブリッククラスは、私はちょうど2形式とテキストボックスとシンプルなアプリでこれを試してみましたが、それは完璧に動作
Public Class globalvariables
Public Shared vatidvariable As String
Public Shared testvariable As String
End Class
ここにあります。しかし、私の実際のプログラムではそうはしません。大惨事は依然として同じです。
テキストbosexの読み取り専用プロパティと有効なプロパティを確認しても問題ありません。私はグレーになっています。
ご協力いただきますようお願い申し上げます。
読む[尋ねる]と[ツアー]を行ってください。最初は将来の質問でDVを避けるのに役立ちます。 2番目は、答えが得られたときにすべきことなど、SOの仕組みを説明しています。 – Plutonix