我有一个变量,其范围需要是全局的,因为它需要在函数和按下按钮中调用。所以我在模块中声明了变量,因此它是全局的。
问题是此变量的值必须等于表单中文本框的text属性的值。
在这里,您可以下载我的问题的VB.net演示:http://db.tt/DDxQJDXl
以下是对发生的事情的解释
您在文本框中输入一个字符串,在这种情况下我输入了“Hello”。然后单击按钮,它会显示您所写的内容。
在该消息框中单击“确定”,然后更改文本框中的值。在这种情况下,我将其改为“再见”。然后我再次点击按钮,但变量没有改变值,消息框再次显示“Hello”。
以下是完整的源代码:
Module Module1
Public strDataValue = frmTest.txtDataValue.Text
End Module
Public Class frmTest
Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
MsgBox(strDataValue)
End Sub
End Class
注意:这只是我在一个更大的程序中遇到的问题的演示,因此变量 必须是全局的。
答案 0 :(得分:3)
当txtDataValue.Text更改时,strDataValue的值不会自动更改。您需要手动更新strDataValue,无论是文本框失去焦点,还是单击“测试”按钮。
答案 1 :(得分:3)
您需要将字段的值设置为TextBox
:
Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
strDataValue = txtDataValue.Text
MsgBox(strDataValue)
End Sub
该字段本身不会更改值。
答案 2 :(得分:2)
您还可以拥有一个公共属性,只要表单处于打开状态,它就会自动返回实际值。
Public ReadOnly Property DataValue() As String
Get
Return frmTest.txtDataValue.Text
End Get
End Property
答案 3 :(得分:1)
您需要将txtDataValue.Text
的值分配给变量strDataValue
以获得更好的效果
不建议使用计时器对象或 TextChenged 事件
txtDataValue.Text
的任何更改都可以在编辑操作结束后指定
为我提供最佳解决方案:Leave
或LostFocus
个事件
Private Sub txtDataValue_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDataValue.Leave
strDataValue = txtDataValue.Text
End Sub