【问题标题】:How check a textbox for data when switching tabs with tabcontrols使用选项卡控件切换选项卡时如何检查文本框的数据
【发布时间】:2023-04-11 11:30:02
【问题描述】:

当我在 tabcontrol 上切换选项卡时,我正在寻找一种方法来检查是否在 2 个文本框中输入了数据。

我也想知道如何使用按钮来指定单击时要转到的选项卡。

我尝试使用 tabcontrol1.click 设置文本框检查,但是当您单击任何选项卡时,即使只是尝试返回输入数据,它也会发出警告。

-感谢您的帮助!

    Private Sub TabControl1_Selecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting
    If fNameTxtBox.Text = "" Or
        IDTxtBox.Text = "" Then
        MessageBox.Show("You must enter a Name and ID number.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
        fNameTxtBox.Focus()
    End If
End Sub

【问题讨论】:

  • 当 TabPage 改变时,TabControl 有一个SelectedIndexChanged 事件。它还有一个Selecting 事件(和Selected),该事件发生在标签页更改之前,并允许您取消更改。不知道为什么你需要一个按钮来点击来改变标签页,这也发生在点击
  • 谢谢 我会检查这些。需要这个按钮是因为老师说我们需要一个按钮……哈哈。我认为通常不需要。
  • 用代码更新帖子 - 我想我需要能够指定我选择的选项卡。它仍然会提示每个选项卡更改,即使在抛出消息框时仍然会更改选项卡。
  • 查看您传递的 e 参数 - 它包含有关事件的重要信息,例如哪个 tabindex 被更改/更改/即将更改。您需要测试涉及哪个选项卡

标签: vb.net validation textbox tabcontrol


【解决方案1】:

试试这个

Private Sub TabControl1_Selecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting
    If fNameTxtBox.Text = "" Or
     IDTxtBox.Text = "" Then
        MessageBox.Show("You must enter a Name and ID number.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
        e.Cancel = True '<<<< were telling VB that the event shoulb be terminated
        fNameTxtBox.Focus()
    End If

End Sub

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

    If fNameTxtBox.Text = "" Or
      IDTxtBox.Text = "" Then
        MessageBox.Show("You must enter a Name and ID number.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)

        'Choose one here
        TabControl1.SelectedTab = TabPage1 'Assuming TabPage1 is the tab where the fNameTxtBox is resides
        TabControl1.SelectedIndex = 0 'Assuming the index number of the TabPage in the tab control where the fNameTxtBox is resides

        fNameTxtBox.Focus()
    End If

End Sub

【讨论】:

  • 每次点击标签页时它仍然会触发,而不仅仅是当他从包含文本框的标签页更改时。
  • 完美!我认为默认情况下从第一行开始就是这样。我仍在试图弄清楚如何指定从按钮单击转到哪个选项卡。
  • 默认情况下,第一页正在加载,这使得他们无法在不输入数据的情况下离开选项卡,因此它可以工作。
  • 我已将答案更新为包含按钮,请参阅我的帖子。
  • 这会引发错误“未处理无效的转换异常 - 无法将类型为 'System.Windows.Forms.MouseEventArgs' 的对象转换为类型 'System.Windows.Forms.TabControlCancelEventArgs'。” .... 很想删除按钮,只需减去几分。有点沮丧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多