在Windows窗体上禁止自动文本框选择.Show()

时间:2010-02-17 18:26:56

标签: c# winforms textbox hover

我有一个应用程序,我正在尝试模仿“软描述”文本框,例如为此站点上的标记和标题位置找到的文本框。

我这样做的方式主要是创建我的文本框,根据鼠标指针进入或离开控件时发生的情况,它会更新文本框的内容以获得效果。

问题在于,当我的表单首次显示时,鼠标光标会立即跳转到第一个文本框,这会删除标题,告诉用户文本框的用途。

如果我在文本框上关闭AcceptTab,那么一切都按预期工作,但用户失去了标签到文本框的功能。

有没有办法关闭文本框的自动选择?

4 个答案:

答案 0 :(得分:2)

你可以在表格本身或者某些标签控件上使用this.Focus()吗?

答案 1 :(得分:2)

迟到但完美的解决方案是选择表格加载时的表格。

将此行添加到构造函数中会得到期望的结果。

this.Select();

但是当使用像OpenFileDialog这样的多线程控件时,如果你想取消对焦/取消选择文本框这个.Select()不起作用,所以我在表单中选择了一个按钮。

button1.Select();

答案 2 :(得分:0)

TabIndex属性控制选项的内容,在加载时,焦点转到第一个控件(由TabIndex排序),其中AcceptTab为true。您可以更改排序,以便您希望用户关注的控件最低(并且标签可以按照您的预期在控件中循环工作)。

或者,正如杰森建议的那样,你可以简单地在FormLoad事件中的任何控件或表单本身上调用Focus()。

答案 3 :(得分:0)

我在Jason的技术上使用了一个变体。首先,我创建了一个带有tabindex 0的虚拟文本框。这样,当显示表单时,将选择该文本框。接下来,我使虚拟文本框的宽度为零,因此它没有可见的组件。

但是,一旦加载了表单,我不希望用户能够切换到“不存在”文本框。因此,我添加了这两位:

    //These functions prevent the textboxes from being implicitly selected.
    private void dummyBox_Leave(object sender, EventArgs e)
    {
        dummyBox.TabStop = false;
    }

    private void Main_Enter(object sender, EventArgs e)
    {
        dummyBox.TabStop = true;
        dummyBox.Select();
    }

Main是我表单的名称。

希望这有助于某人。

Billy3