我正在开发一个使用大量 RichTextBoxes 的 C# winForms 应用程序。我发现如果我复制一张图片并将其粘贴到任何 RichTextBox 中,该图片就会被发布。有没有办法不允许将图像粘贴到 RichTextBox 中。换句话说,只允许键盘字符。
问问题
1939 次
3 回答
2
上面的答案的问题是它在混合内容的情况下不起作用。例如,如果您突出显示电子表格中的几行并粘贴到 Richtextbox 中,您最终会得到的不仅仅是原始文本。我认为更好的解决方案如下:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
if (Clipboard.GetData("Text") != null)
Clipboard.SetText((string)Clipboard.GetData("Text"), TextDataFormat.Text);
else
e.Handled = true;
}
}
编辑:下面的方法是由 MrCC 共享的,比我上面的方法更直接/更好。
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
if (Clipboard.ContainsText())
richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Text));
e.Handled = true;
}
}
于 2017-02-10T20:31:22.513 回答
1
我能够回答我的问题。这是以防其他人正在寻找它。
private void InputExpressionRchTxt_KeyDown(object sender, KeyEventArgs e)
{
bool ctrlV = e.Modifiers == Keys.Control && e.KeyCode == Keys.V;
bool shiftIns = e.Modifiers == Keys.Shift && e.KeyCode == Keys.Insert;
if (ctrlV || shiftIns)
if (Clipboard.ContainsImage())
e.Handled = true;
}
于 2012-12-05T06:52:51.513 回答
0
也许,您可以捕捉粘贴事件并检查复制到 RichTextBox 的对象。如果是图像,只需将其删除。
于 2012-12-04T12:45:06.810 回答