첫 번째 폼에서 두 번째 폼으로 전달되는 변수가 있습니다. 그러나 ComboBox 이벤트 처리기 메서드 내에서이 변수를 사용하려고하면 빈 변수가 표시되어 그 이유를 알 수 없습니다.ComboBox 메서드에 변수 전달
Public CellValue As String
Public Sub New(ByVal CellValue As String)
InitializeComponent()
MsgBox(CellValue)
End Sub
이것은 잘 작동하며 메시지 값을 셀 값과 함께 표시 할 수 있습니다. 그러나 동일한 Form에있는 내 콤보 상자 메서드에서이 CellValue에 액세스하려고하면 변수가 비어 있으며 이유를 파악할 수 없습니다. 나는 콤보의 인수로 "문자열로 ByVal의의 CellValue"는 퍼팅 시도했지만 작동하지 않는
Public Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
MsgBox(CellValue)
End Sub
, 나는이 이벤트를 처리 할 수없는 오류가 발생합니다.
나는 무엇이 진행되고 있는지 이해할 수 없도록 변수를 public으로 설정했습니다. 내가 그물을 수 시간 동안 찾고 있었기 때문에 올바른 방향으로 어떤 도움을 주면 좋을 것이다. 그 도움이된다면
는 여기를 Form1입니다 : 나 감사의 코멘트 섹션에서 Plutonix하는
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를 저장하지 않습니다. 동일한 이름을 사용한다는 사실은 자동으로 할당을하지 못합니다. 실제로 코드를 혼란스럽게 만듭니다. BTW,'Public'은 그 변수와 아무런 관계가 없습니다. 그 변수를 폼 외부에서 액세스 가능하게 만듭니다. 'Me.CellValue = CellValue' – Plutonix
이렇게 해 줘서 고마워. 나는 변수가 폼의 맨 위에서 작동하면 왜 설정되지 않을지 아직 이해하지 못한다 ...하지만 나는 이것을 마음 속에 간직 할 것이다. 고맙습니다. – user3053446
내가 말했듯이, 상단의 'CellValue' 변수 **는 전달 된 변수와 다른 변수입니다 **. 그것들은 매우 다른 범위를 가지고 있습니다 : Public은 폼 레벨 범위를 가지고 있고, 다른 하나는'Sub New'에만 존재합니다. 당신이 그들에게 같은 이름을 주었다고해서 그들에게 같은 변수가되지는 않습니다. Lars가 보여주는 것과 다른 이름을 주면 더 좋을 것입니다. – Plutonix