我正在使用具有TextBox和Button的Silverlight控件。当我单击按钮(下面调用SelectText)时,我想选择文本框中的所有文本。
这是我的代码:
private void SelectText()
{
TextBox tb = this.txtFirstName;
tb.SelectionStart = 0;
tb.SelectionLength = 3;
// tb.Select(0, this.txtFirstName.Text.Trim().Length - 1);
// tb.SelectAll();
// tb.Text = String.Empty;
}
评论的代码是我已经尝试过的,但两者都没有用。
有人对我做错了什么有建议吗?
答案 0 :(得分:4)
您可能需要将焦点放在文本框中以查看实际选择的发生(在选择之前或之后,可能无关紧要,但您必须尝试):
private void SelectText()
{
TextBox tb = this.txtFirstName;
tb.SelectionStart = 0;
tb.SelectionLength = 3;
// tb.Select(0, this.txtFirstName.Text.Trim().Length - 1);
// tb.SelectAll();
// tb.Text = String.Empty;
tb.Focus();
}
答案 1 :(得分:1)
SelectAll()有效 - 我已多次使用它。在这种方法发生后是否会操纵文本框?
答案 2 :(得分:1)
这可以解决整个用户控件的问题。
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
protected override void OnGotFocus(RoutedEventArgs e)
{
TextBox tb = e.OriginalSource as TextBox;
if (tb != null)
tb.SelectAll();
base.OnGotFocus(e);
}
}
答案 3 :(得分:0)
焦点解决方案对我有用,但有时我会在SelectAll()期间得到这个ExecutionEngineException并且它完全是假的!即使是尝试......捕获也不会阻止它,并且没有关于错误的更多细节。