3

我正在开发一个使用大量 RichTextBoxes 的 C# winForms 应用程序。我发现如果我复制一张图片并将其粘贴到任何 RichTextBox 中,该图片就会被发布。有没有办法不允许将图像粘贴到 RichTextBox 中。换句话说,只允许键盘字符。

4

3 回答 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 回答