c#的富文本控件做粘贴时会带着格式进来,这点有时候不是我们想要的。
网上的一些解决方法一般是这样
监控keydown事件
这有一些问题
1. keydown事件不靠谱,按的很快的时候不一定触发
2. 默认的黏贴操作无法屏蔽,会出现黏贴两次的情况
/// <summary>
/// 粘贴内容时,去除源文本的格式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rtbContent_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && 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);
}
}