【问题标题】:Silverlight Programmatically select textSilverlight 以编程方式选择文本
【发布时间】:2009-03-16 23:04:05
【问题描述】:

我正在使用具有 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;
    }

注释代码是我已经尝试过的,但都没有工作。

有人对我做错了什么有建议吗?

【问题讨论】:

  • btw.. 我知道 // tb.Text = String.Empty 会清除文本

标签: c# silverlight


【解决方案1】:

您可能需要将焦点放在文本框上才能看到发生的实际选择(无论是在选择之前还是之后,这可能并不重要,但您必须尝试):

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();
    }

【讨论】:

    【解决方案2】:

    SelectAll() 有效——我不止一次使用过它。这个方法发生后是否有东西在操作文本框?

    【讨论】:

    • 不,但我在网格中有我的控件,我想知道这是否重要。
    【解决方案3】:

    这对整个用户控件都有作用。

    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);
        }
    }
    

    【讨论】:

      【解决方案4】:

      焦点解决方案对我有用,但有时我在 SelectAll() 期间收到此 ExecutionEngineException,这完全是假的!即使是 try...catch 也无法阻止它,也没有关于错误的更多详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-04
        • 2012-11-09
        • 2013-02-05
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        相关资源
        最近更新 更多