textbox value not getting another form button click event in winforms

可紊 提交于 2019-12-13 08:34:43

问题


I am working on windows form application and I have two forms. 1 is visitorinfo 2 is vistorexitsign.

In the visitorinfo I have save button, while cliking save button I want to get textboxvalue from vistirexitsign form.

Both forms are running at the same time, I have given code like this in save button of visitor info form:

Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
        Dim obj As New VisitorExitsign
        Dim vs As String = obj.txtvisitoridExit.Text
            Dim Visitorid As String = My.Forms.VisitorExitsign.txtvisitoridExit.Text

But I am always getting here txtvisitoridexit.text value null. Not getting the text value.

What is wrong with my code?


回答1:


You are creating new instance in every click event.

Dim obj As New VisitorExitsign

So the values are set in the new objects but not in existing object.

So actually you have to refer to existing object of VisitorExitsign.

EDIT:

For example:

You are creating form VisitorExitsign in some method.

So whenever you are creating store its reference in some global variable.

VisitorExitsign obj = new VisitorExitsign

at the place where you are creating form

then in click event use obj and assign text.




回答2:


When you refer to My.Forms.VisitorExitSign.txtvisitoridExit.Text you are referencing the form itself rather than an instance of the form, if that makes sense. So, you are trying to access the default form rather than one which the user has entered text into.

What you probably want to do is to change

Dim Visitorid As String = My.Forms.VisitorExitsign.txtvisitoridExit.Text`

into

Dim Visitorid As String = obj.txtvisitoridExit.Text

What that will do is make sure that the Visitorid is getting it's value from an instance of VisitorExitSign.




回答3:


Try Like This

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
   Handles Button1.Click

        Dim forms As FormCollection = Application.OpenForms
        For Each form As Form In forms
           If form.Name = "VisitorExitsign" Then
            Dim vs As String = CType(form, VisitorExitsign).txtvisitoridExit.Text
          End If
        Next

    End Sub

Suggesstion:

 frmVX = New VisitorExitsign 
frmVX.Location = New Point(781, 0) 
frmVX.MdiParent = Me 
frmVX.Show() 

frmVE = New VisitorInfo() 
frmVE.Location = New Point(0, 0) 
frmVE.MdiParent = Me 
frmVE.Tag=frmVX
frmVE.Show()

Button_Click Event

   Dim vs As String = CType(me.Tag, VisitorExitsign).txtvisitoridExit.Text



回答4:


Hope this will works

  • create a module

    Module modTextValue
     Public _textVal As String
    End Module 
    
  • then goto txtvisitoridexit's LostFocus event on your form vistirexitsign

    Private Sub txtvisitoridexit_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus
       _textVal = txtvisitoridexit.Text
    End Sub
    
  • on btnSave'click

     Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
       Dim str As String
       str = _textVal
     End Sub
    



回答5:


Try this : in button save update your code to :

  Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
    Dim obj As New VisitorExitsign
    obj.ShowDialog()
    Dim vs As String = obj.txtvisitoridExit.Text
  End sub

when you close VisitorExitsign, the variable vs will take the value of obj.txtvisitoridExit



来源:https://stackoverflow.com/questions/24800455/textbox-value-not-getting-another-form-button-click-event-in-winforms

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!