【问题标题】:Textbox losing focus after cursor selection moved to end光标选择移到结尾后文本框失去焦点
【发布时间】:2012-08-10 17:02:11
【问题描述】:

我有一个表单,它加载,点击一个按钮(将文本添加到文本框),将光标移动到文本框文本的末尾,然后将活动控件设置为文本框,因此用户可以立即开始输入.文本框填充得很好,但表单失去了焦点。这只是那里的选择线,如果我把它拿出来,它工作正常。用户必须单击表单以使其处于活动状态。有什么想法吗?

private void createNewFolder_Load(object sender, EventArgs e)
{
     addDate.PerformClick();
     folderNameTextBox.Select(folderNameTextBox.Text.Length, 0);
     this.ActiveControl = folderNameTextBox;
     this.Focus();
}

【问题讨论】:

  • his.ActiveControl = folderNameTextBox;很好,你需要删除 this.Focus();并将其更改为 folderNameTextBox.Focus();
  • ikathegreat,this.Focus 看起来像是指表单本身而不是活动控件。这有意义吗。请原谅“this”上的双关语,,
  • 也许这个细节不是很明显,但这是一个新的对话框窗口,上面的代码是针对formload事件的。通过在加载后单击表单,文本框具有焦点。我不必点击它,所以我需要以某种方式激活这个表单。

标签: c# textbox


【解决方案1】:

在 Load 事件中无法聚焦,表单尚不可见。到目前为止,最简单的方法是只为控件提供最低的 TabIndex。或者使用 Select() 方法:

private void createNewFolder_Load(object sender, EventArgs e)
{
    addDate.PerformClick();
    folderNameTextBox.Select(folderNameTextBox.Text.Length, 0);
    folderNameTextBox.Select();
}

【讨论】:

  • +1 完全同意。确实,Focus 用得太多了(根据 M$ 的说法,它实际上是在内部编写控制,而 Select() 无论如何都会做焦点的事情,是首选方法)。
【解决方案2】:

代替:

this.ActiveControl = folderNameTextBox;

试试:

folderNameTextBox.Focus();

如果文本框仍然失焦,请尝试使用以下命令选择它:

folderNameTextBox.Select();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    相关资源
    最近更新 更多