单击Panel内的TextBox会多次触发Enter事件

时间:2013-06-05 22:57:14

标签: c# winforms visual-studio-2010 textbox panel

我在某些面板中有一些TextBox。对于那些文本框,我设置了一个Enter事件函数。

private void TextBox_Enter(object sender, EventArgs e)
{
    TextBox tBox = sender as TextBox;
    tBox.HideSelection = false;
    tBox.SelectAll();
    tBox.HideSelection = true;
}

我执行此操作,以便用户可以选中或单击文本框并开始键入。现在,我已成功地以其他形式完成了这项工作。我现在的问题是,出于某种原因,将它们放入带有Enter事件的面板螺钉中。

在代码中插入一个断点告诉我,事件会被触发多次,在20或30秒左右。我也有一个Leave事件,但不会触发,只有Enter事件。只有在面板内时才会发生这种情况。

TextBoxes设置为TabStops并具有不同的TabIndex。

现在,我知道 导致它的原因,但不是原因。如果我删除tBox.HideSelection我可以进入TextBox而不会多次触发Enter事件。不知道为什么代码会在Panel中被搞砸,因为代码在所述面板之外的工作方式也是如此。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

试试这个......

Dim lFocused as Boolean

Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
        TextBox1.SelectAll()
        lFocused = True
End Sub

Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
        lFocused = False
    End Sub

Private Sub TextBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseUp
    lFocused = True
    TextBox1.SelectAll()
End Sub

Based idea