【问题标题】:Filtering paste in Silverlight 4Silverlight 4 中的过滤膏
【发布时间】:2011-10-24 16:56:03
【问题描述】:

我有TextBox,它只允许插入数值(过滤),但是当我粘贴复制的文本时,它允许任何类型的符号。如何在粘贴前阻止或过滤文本?

【问题讨论】:

    标签: c# silverlight silverlight-4.0 filtering copy-paste


    【解决方案1】:

    您可以在任何手动输入之前备份您的文本,然后当提供的输入无效时恢复以前的文本,如下所示:

            _backupText = string.Empty;
            doNotPasteTextBox.TextInputStart += (sender, e) =>
                                                    {
                                                        int textParsed;
                                                        if(int.TryParse(e.Text,out textParsed))
                                                        {
                                                            _backupText = doNotPasteTextBox.Text.Insert(doNotPasteTextBox.SelectionStart, e.Text);
                                                        }else
                                                        {
                                                            e.Handled = true;
                                                        }
                                                    };
    
            doNotPasteTextBox.TextChanged += (sender, e) =>
                                                 {
                                                     int textParsed;
                                                     int selectionStart = doNotPasteTextBox.SelectionStart;
                                                     if(!int.TryParse(doNotPasteTextBox.Text, out textParsed))
                                                     {
                                                         doNotPasteTextBox.Text = _backupText;
                                                     }
                                                     doNotPasteTextBox.SelectionStart = selectionStart;
                                                 };
    

    我不会推荐trying to capture the control keys 或其他任何东西,因为当您使用 mac 或 linux 时,您就完蛋了。

    调整我的示例并将其倒入一个新的文本框控件中以使其更清晰,但您明白了。

    【讨论】:

      【解决方案2】:

      您可以使用Clipboard.GetText() 来获取插入到文本框中的文本,但这会弹出一条消息,并且用户必须授予应用程序访问剪贴板的权限。

      如果你没问题,我会用这个。

      【讨论】:

        猜你喜欢
        • 2012-01-26
        • 1970-01-01
        • 2012-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        相关资源
        最近更新 更多