如何禁用两个文本框中的文本框?

时间:2013-07-02 04:30:00

标签: vb.net

我有一个vb格式的文本框。如果txtMaterial填充我想要禁用txtPackage,反之亦然。我使用下面的代码,但它没有用。有人可以解决它。 真的很感激。 TQ。

Private Sub txtMaterial_TextChange(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMaterial.TextChanged
    txtMaterial.Enabled = True
    txtPackage.Enabled = False

End Sub

Private Sub txtPackage_TextChange(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPackage.TextChanged

    txtPackage.Enabled = True
    txtMaterial.Enabled = False

End Sub

3 个答案:

答案 0 :(得分:3)

让两个TextBox都触发相同的处理程序,然后根据另一个TextBox中是否包含某些内容,简单地设置每个Textb的Enabled()状态:

Private Sub txtChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMaterial.TextChanged, txtPackage.TextChanged
    txtMaterial.Enabled = (txtPackage.TextLength = 0)
    txtPackage.Enabled = (txtMaterial.TextLength = 0)
End Sub

*请注意,第一行的结尾在结尾处使用Handles txtMaterial.TextChanged, txtPackage.TextChanged列出了两个控件。

答案 1 :(得分:0)

Private Sub txtMaterial_TextChange(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMaterial.TextChanged
    If txtMaterial.Text <> "" Then
        txtPackage.Enabled =False
    End If
End Sub

答案 2 :(得分:0)

根据您添加的评论

  

Blockquote我想让它作为第二个禁用。但在我的情况下,如果我填写txtMaterial,txtPackage也可以同时填充文本。

问题的解决方案必须是:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    txtPackage.Enabled = False
End Sub


Private Sub txtMaterial_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMaterial.TextChanged
    If Not String.IsNullOrEmpty(txtMaterial.Text) Then
        txtPackage.Enabled = True
    Else
        txtPackage.Enabled = False
    End If
End Sub