2009-09-08 91 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