0

我在一些面板中有一些文本框。对于那些文本框,我设置了一个 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 年代的某个地方。我也为他们准备了一个离开事件,但它不会被触发,只有 Enter 事件。这只发生在它们在面板内时。

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

现在,我确实知道是什么原因造成的,但不知道为什么。如果我删除了,tBox.HideSelection我可以在不触发 Enter 事件多次的情况下进入 TextBox。不知道为什么代码在面板中被搞砸了,因为代码在所述面板之外按预期工作。

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

4

1 回答 1

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

基于理念

于 2013-06-06T16:00:29.770 回答