【问题标题】:Convert text to plain text inside textbox将文本转换为文本框内的纯文本
【发布时间】:2014-10-17 21:06:00
【问题描述】:

我有一个包含文本框、验证控件和按钮的应用程序。问题是,如果有人从文本框内的 word 文档中复制文本,由于验证控制,某些特殊字符将不允许使用。但是,如果我删除这些特殊字符并输入它们,验证控件就会起作用。有没有办法将该文本转换为文本框中的纯文本或富文本?

【问题讨论】:

  • 我不确定我是否在关注。看起来验证控件正在做它应该做的事情。有什么问题?你能提供一些代码/一个它应该如何表现的例子吗?
  • 好的,假设我从包含撇号(') 的单词中复制了一些内容,但由于它来自 Word 文档,因此撇号的格式不是键盘上的标准撇号。因此,我想将所有特殊字符转换为标准键盘字符。不是这个词有时具有的非常丰富的字符。这是否解释得更好一点?
  • 好一些,但“标准键盘字符”的定义不明确。 (我输入的这些字符正常吗?1ºÑ—»½©¿¾Éõ...)另外,也许您不想验证,而只需输入“消毒”,无论在您的应用中意味着什么。
  • 不,标准键盘字符(美国键盘布局),您只需按一两个按钮,无需使用“alt”键和数字键盘(无 ASCII OCT 代码)。我有一些,但为了更好地保护应用程序,你不能通过清理来捕捉所有威胁:一些字符,最好不要允许而不是过滤它们。

标签: c# asp.net validation textbox


【解决方案1】:

我假设您想在进行验证之前将文本转换为纯 ASCII。

看看这个答案:Conversion of Special characters from MS-Word or Open Office writer to Notepad

看起来像您要找的东西。

【讨论】:

  • 我最终只是将这些 MS-Word 字符中的一些添加到验证控件中。但我更喜欢这些答案。
【解决方案2】:

如果它是一个 winforms 应用程序,试试这个:

using System.Windows.Forms;
public class MyTextBox : TextBox 
{
    protected override void WndProc(ref Message m) {        
        if (m.Msg == 0x302 && Clipboard.ContainsText())
        {          
            var text = new string(Clipboard.GetText().Where(c => !char.IsControl(c)).ToArray());
            this.SelectedText = text;
            return;
        }
        base.WndProc(ref m);
    }
}

参考: http://msdn.microsoft.com/en-us/library/18zw7440(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp

【讨论】:

  • 不是 winforms 应用程序。网络应用程序。这就是该标签的用途(“asp.net”)
猜你喜欢
  • 1970-01-01
  • 2012-04-12
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2010-11-06
  • 1970-01-01
相关资源
最近更新 更多