2012-08-10 137 views
0

我有一个窗体加载,点击按钮(将文本添加到文本框),将光标移动到文本框文本的末尾,然后将活动控件设置为文本框,所以用户可以立即开始输入。文本框填充良好,但表单失去了重点。这只是在那里的选择线,如果我把它拿出来,它工作正常。用户必须点击表格才能激活它。有任何想法吗?文本框在光标选择移动到结尾后失去焦点

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

his.ActiveControl = folderNameTextBox; 是好的,你需要删除this.Focus();并将其更改为folderNameTextBox.Focus(); – MethodMan 2012-08-10 17:06:18

+0

ikathegreat,this.Focus看起来像它指的是形式本身,而不是主动控制..这是否有道理..赦免双关语“这个”, – MethodMan 2012-08-10 17:07:57

+0

也许这个细节并不完全明显,但这是一个新的出现的对话窗口,上面的代码用于formload事件。通过在加载后单击表单,文本框具有焦点。我不必点击它,所以我需要让这个表单以某种方式活跃起来。 – ikathegreat 2012-08-10 17:32:58

回答

1

聚焦不能正常工作在Load事件中,表单尚不可见。到目前为止,最简单的方法是只给控制最低的TabIndex。或者使用Select()方法:

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

+1完全同意。事实上,Focus的用法太多了(根据M $确实是用来控制内部写入的,而Select(),无论如何它都是关注的东西)是首选方法。 – Wolf5370 2012-08-10 18:46:01

0

相反的:

this.ActiveControl = folderNameTextBox; 

尝试:

folderNameTextBox.Focus(); 

如果文本框仍是失焦,请尝试选择它使用:

folderNameTextBox.Select(); 
相关问题