c# 重写 RichTextBox 粘贴函数 - Win Form App

标签 c# winforms richtextbox

我希望在我的 Windows 窗体应用程序上自定义富文本框控件。 RichTextbox将用于输入文本数据,一旦完成,将通过SMS短信发送。

要求文本中不能有任何换行符,因为某些较旧的手机无法正确显示信息并且会丢失格式。

我需要做的是在将剪贴板数据粘贴到 RTB 之前捕获剪贴板数据并自定义其格式,例如删除换行符。

我在这里找到了一个示例,该示例在一定程度上可以正常工作,但无法粘贴到其他控件中:-

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
               {

                        if((keyData == (Keys.Control | Keys.V)))
                        {
                        IDataObject iData = Clipboard.GetDataObject();

                        if (iData.GetDataPresent(DataFormats.Text))
                        {
                             string contents = Clipboard.GetText().Replace("\r\n", " ");
                             Clipboard.SetData(DataFormats.Text, contents);
                             richTextBox1.Paste();
                        }
                          return true;
                        } 
                        else 
                        {
                         return base.ProcessCmdKey(ref msg, keyData);
                        }
                }

有人知道我应该怎么做吗?

最佳答案

需要继承RichTextBox,并按照自己的描述添加自定义处理;您还可以将原始数据设置回剪贴板,以便能够将其粘贴到其他控件中(以原始形式):

public class CustomRTB:RichTextBox
    {
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {

            if ((keyData == (Keys.Control | Keys.V)))
            {
                IDataObject iData = Clipboard.GetDataObject();

                if (iData.GetDataPresent(DataFormats.Text))
                {
                    string contents = Clipboard.GetText();
                    // string newText = *process text here*
                    Clipboard.SetData(DataFormats.Text, newText);
                    this.Paste();
                    Clipboard.SetData(DataFormats.Text, contents);
                }
                return true;
            }
            else
            {
                return base.ProcessCmdKey(ref msg, keyData);
            }
        }

    }

关于c# 重写 RichTextBox 粘贴函数 - Win Form App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407512/

相关文章:

c# - Windows Server 2016 上的 IIS 10 未运行我的 ASP.NET MVC 网站

c# - C# 中带有查询的 Datagridview

richtextbox - 我要在Rich Text Editor中使用的是粗体,斜体和链接。那里有东西吗?

c# - 引用以编程方式创建的命名元素?

C# Windows 窗体显示 Facebook 评论

c# - 如何从 C# 中的富文本框文本中查找字体名称、大小、样式、文本颜色

c# - C++ 和 .NET 是否在银行、医疗保健和电信等领域一起使用

c# - 将 XML 写入网页

c# - 我需要找到一个好的 BSD 许可 C# SIP 软电话

c# - 如何在标签上显示百分比c#