2009-09-08 84 views
4

每當我將焦點設置到WinForms(.NET 3.5)中的文本框時,整個文本被選中。如果將MultiLine設置爲true或false,則無關緊要。似乎正是這個用戶是看到的完全相反: Making a WinForms TextBox behave like your browser's address bar.NET - WinForm文本框 - 焦點和SelectedText

我試圖做:

private void Editor_Load(object sender, EventArgs e) 
    { 
     //form load event 
     txtName.SelectedText = String.Empty; // has no effect 
    } 

有另一種屬性我可以設置爲阻止這種令人討厭的行爲?

我只注意到這個工程:

 txtName.Select(0,0); 
     txtScript.Select(0,0); 

但我真的需要我所有的文本框調用select()?

+0

看評論凱爾Rozendo。 – BuddyJoe 2009-09-08 18:20:18

回答

0

那麼,你不需要使用Focus()如果你使用Select(0,0),所以我沒有看到問題?它仍然是一個單一的電話。

+0

我認爲這隻發生在我身上,因爲我在繪製控件之前設置了TextBox.Text值。如果通過「方法」或「屬性」執行操作,則無關緊要。難怪我以前沒有注意到這一點。 – BuddyJoe 2009-09-08 18:19:16

+0

我可以點擊哪些表單事件以確保我的文本框的值在表單繪製事件之後設置? – BuddyJoe 2009-09-08 18:21:38

+0

啊我明白了。你什麼時候設置文本框,在構造函數中還是在加載事件中?如果它是構造函數,那就是你的問題。 – 2009-09-08 18:32:14

2

創建一個覆蓋Enter事件的自定義TextBox控件。

事情是這樣的:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Windows.Forms; 

namespace YourNamespace 
{ 
    class MyTextBox : TextBox 
    { 

     protected override void OnEnter(EventArgs e) { 
      this.Select(0, 0); 

      base.OnEnter(e); 
     } 

    } 
} 
+0

一切都很好,很好做,但它並沒有解決原來的問題。 – 2009-09-08 18:56:21

+0

當我讀到問題時,問題是爲了防止大量文本框在輸入時選擇所有文本。我的解決方案確實解決了這個問題,但沒有很多箍跳。 (的確,OP的代碼中可能還有別的東西讓我的解決方案無法運行,但我認爲這值得考慮)。 – 2009-09-08 19:39:41