我正在使用C#winForms应用程序,我正在使用大量的RichTextBox。我发现如果我复制了一个图像并将其粘贴到任何RichTextBox中,图像就会被发布。有没有办法不允许将图像粘贴到RichTextBox中。换句话说,只允许键盘字符。
答案 0 :(得分: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;
}
答案 1 :(得分:1)
上面答案的问题是,在混合内容的情况下它不起作用。例如,如果您从电子表格中突出显示几行并粘贴到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;
}
}
答案 2 :(得分:0)
也许,您可以捕获粘贴事件并检查复制到RichTextBox的对象。 如果是Image,只需将其删除即可。