0
私は最初のフォームから2番目のフォームに渡される変数を持っています。しかし、この変数をComboBoxイベントハンドラメソッド内で使用しようとすると、空白が表示され、その理由がわかりません。ComboBoxメソッドに変数を渡す
Public CellValue As String
Public Sub New(ByVal CellValue As String)
InitializeComponent()
MsgBox(CellValue)
End Sub
これはうまくいきます。私はCell Valueでメッセージボックスを表示できます。しかし、私は同じフォーム上のコンボボックスメソッドでこのCellValueにアクセスしようとすると変数が空白になり、なぜその理由が分かりません。
Public Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
MsgBox(CellValue)
End Sub
私は、コンボボックス内の引数として「文字列としてByVal CellValue」を入れて試してみたが、それは動作しません、私はそれがイベントを処理することができないというエラーが発生します。
変数がpublicに設定されているため、何が起こっているのか分かりません。私が何時間もネットを検索しているので、正しい方向への助けがあれば大丈夫です。
Imports MySql.Data.MySqlClient
Public Class Form1
Dim MysqlConn As MySqlConnection
Dim COMMAND As MySqlCommand
Dim value As String
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
End Sub
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server=0.0.0.0;
userid=username;
password=******;
database=password"
Dim SDA As New MySqlDataAdapter
Dim dbDataSet As New DataTable
Dim bSource As New BindingSource
Try
MysqlConn.Open()
Dim Query As String
Query = "select CaseNumber, FirstName, LastName from customer"
COMMAND = New MySqlCommand(Query, MysqlConn)
SDA.SelectCommand = COMMAND
SDA.Fill(dbDataSet)
bSource.DataSource = dbDataSet
DataGridView1.DataSource = bSource
SDA.Update(dbDataSet)
MysqlConn.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
MysqlConn.Dispose()
End Try
End Sub
Public Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If e.ColumnIndex = 0 Then
Dim CellValue As Object = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
If IsDBNull(value) Then
MsgBox("No Case Number for this particular record.")
Else
Dim ThirdForm As New Form2(CellValue)
Me.Hide()
ThirdForm.Show()
End If
End If
End Sub
End Class
あなたは、その変数に渡されたCellValueを保存していません。彼らが同じ名前を持っているという事実は自動的に代入をしません。実際は、あなたのコードをもっと混乱させるでしょう。ところで、 'Public'はそれとは関係がありません。その変数をフォームの外で利用できるようにします。 'Me.CellValue = CellValue' – Plutonix
これはうまくいきました、ありがとうございました。変数がフォームの上部で動作する場合、なぜそれが設定されないのかまだ分かりません...しかし、私はこれを心に留めておきます。ありがとうございました。 – user3053446
私が言ったように、先頭の「CellValue」変数は、渡された変数とは異なる変数です**。彼らは非常に異なるスコープを持っています:Publicはフォームレベルのスコープを持ち、もう一つは 'Sub New'だけに存在します。あなたは彼らに同じ名前を与えても同じ変数にはならない。あなたがラースのショーとは違う名前を付けた方が良いでしょう。 – Plutonix