本文介绍: c#的富文本控件粘贴时会带着格式进来,这点有时候不是我们想要的。1. keydown事件不靠谱,按的很快的时候不一定触发。2. 默认黏贴操作无法屏蔽,会出现黏贴两次的情况。我们可以一个角度思考,就可以取巧的解决这个问题网上的一些解决方法一般是这样。监控keydown事件。

c#的富文本控件粘贴时会带着格式进来,这点有时候不是我们想要的。

网上的一些解决方法一般是这样

监控keydown事件

这有一些问题

1. keydown事件不靠谱,按的很快的时候不一定触发

2. 默认黏贴操作无法屏蔽,会出现黏贴两次的情况

/// <summary>
/// 粘贴内容时,去除源文本格式
/// </summary>
/// <param name="sender"></param>
/// &lt;param name="e"&gt;</param>
private void rtbContent_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Control &amp;&amp; e.KeyCode == Keys.V)
    {
        IDataObject dataObject = Clipboard.GetDataObject();
        if (dataObject.GetDataPresent(DataFormats.StringFormat))
        {
            e.Handled = true;
            var content = (string)Clipboard.GetData(DataFormats.StringFormat);
            Clipboard.Clear();
            Clipboard.SetData(DataFormats.StringFormat, content);
            rtbContent.Paste();
        }
    }
}

————————————————
版权声明本文为CSDN博主「十四贝勒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明原文链接https://blog.csdn.net/thanks_hck/article/details/126888647

我们可以换一个角度思考,就可以取巧的解决这个问题

就是控件激活时,把粘贴板的格式信息刷掉

private void richTextBox1_MouseEnter(object sender, EventArgs e)
{
    // 鼠标进入时,清除粘贴板的格式
    IDataObject dataObj = Clipboard.GetDataObject();
    if (dataObj.GetDataPresent(DataFormats.StringFormat))
    {
        var txt = (string)Clipboard.GetData(DataFormats.StringFormat);
        Clipboard.Clear();
        Clipboard.SetData(DataFormats.StringFormat, txt);
    }
}

原文地址:https://blog.csdn.net/narlon/article/details/134804784

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44974.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注