J'ai posé des questions sur la transmission de variables entre les formulaires et les réponses obtenues. Je les ai testés avec un formulaire simple et ça a marché. J'ai créé une classe variable globale et une variable publique et cela a semblé fonctionner. mais quand j'ai essayé la même chose dans mon programme actuel. ça ne marche pas et je n'arrive pas à comprendre pourquoi.la variable de passage ne fonctionnait pas
Fondamentalement, j'ai un formulaire qui affiche l'inventaire. chaque élément a un champ Vatid. quand je clique sur un bouton, je veux qu'il ouvre le formulaire de TVA et je choisis un ID de TVA différent en le sélectionnant à partir d'un DataGrid. puis, lorsque je clique sur un bouton de sélection, cet identifiant doit retourner à l'écran d'inventaire déjà ouvert et mettre à jour la zone de texte vatid pour cet élément.
sur cet écran que je veux cliquer sur le bouton à côté de vatid et ouvrir une forme de cuve à partir de laquelle je sélectionne un code type de cuve
pour cet écran est ici
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
l'écran de cuve est ici vat form Code qui est censé passer la variable globale à l'écran d'inventaire
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
ma classe publique est ici
Public Class globalvariables
Public Shared vatidvariable As String
Public Shared testvariable As String
End Class
j'ai essayé sur une application simple avec seulement 2 formes et zones de texte et il fonctionne parfaitement. mais ici, dans mon programme actuel, ce n'est pas le cas. et le vatid reste toujours le même.
J'ai vérifié les propriétés readonly et activé les propriétés pour le texte bosex et ils sont tous très bien. Je deviens gris.
toute aide sera appréciée.
Veuillez lire [ask] et prenez le [tour]. Le premier peut aider à éviter les DV sur les questions futures; la seconde explique comment SO fonctionne comme ce que vous devriez faire quand vous obtenez une réponse – Plutonix