2012-08-10 79 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(); 
相關問題