Вторая форма не показывает значение, сохраненное в первой форме при вызове - PullRequest
1 голос
/ 19 января 2012

Привет всем, что я пытаюсь выяснить, почему моя вторая форма не отображает значение, которое я получил в моей первой форме.

Код для первой формы:

 Private Sub scannerOnCom_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
    responceBack = scannerOnCom.ReadLine
    Call frm1110.clickButton(responceBack) 
 End Sub

Второй код формы выглядит следующим образом:

Public Sub clickButton(ByRef theResponse As String)
    txtNumber.Text = theResponse
    'Call cmdNextFinish_Click(Nothing, Nothing)
End Sub

Однако, когда я отлаживаю его, чтобы убедиться, что что-то хранится для ответа, есть, но по какой-то причине он не помещает его в текстовое поле.Это пусто.

Любая помощь будет отличной!

Дэвид

ОБНОВЛЕНИЕ

Хорошо, поэтому Form1:

Dim tmpForm3020 As New frm3020

Private Sub cmd3020_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd3020.Click
    tmpForm3020.Show()
    Me.WindowState = FormWindowState.Minimized
End Sub

Private Sub scannerOnCom_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
    responceBack = scannerOnCom.ReadLine
    tmpForm3020.txtNumber.Text = responceBack
End Sub

Если это правильно, тогда я получаю сообщение об ошибке:

xForm.txtNumber.Text = responseceBack

Говоря:

Операция между потоками недопустима: элемент управления 'txtNumber' доступен из потока, отличного от потока, в котором он был создан.

Ответы [ 2 ]

1 голос
/ 19 января 2012

Вы явно создаете экземпляр своей второй формы или используете экземпляр по умолчанию?Т.е. "frm1110" - это имя класса второй формы или экземпляр, который у вас есть new'd?В любом случае убедитесь, что это тот же экземпляр, который фактически отображается.

1 голос
/ 19 января 2012
Dim tmpForm3020 As New frm3020

Private Sub cmd3020_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd3020.Click
    tmpForm3020.Show()
    Me.WindowState = FormWindowState.Minimized
End Sub

Private Sub scannerOnCom_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
    responceBack = scannerOnCom.ReadLine
    TestData(responceBack)
End Sub

Private Sub TestData(ByVal xVal As String)
   If InvokeRequired Then
      Me.Invoke(New MethodInvoker(AddressOf TestData))
      ' change Me to tmpForm3020 (if it does not work)
      ' tmpForm3020.Invoke(New MethodInvoker(AddressOf TestData))  
   Else
      tmpForm3020.txtNumber.Text = xVal
   End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...