在富文本框中防止图像

时间:2012-12-04 12:37:57

标签: c# winforms richtextbox

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

3 个答案:

答案 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,只需将其删除即可。