3

たくさんのRichTextBoxを使用しているC#winFormsアプリケーションに取り組んでいます。画像をコピーしてRichTextBoxに貼り付けると、画像が投稿されることがわかりました。RichTextBoxに画像を貼り付けないようにする方法はありますか?つまり、キーボード文字のみを許可します。

4

3 に答える 3

2

上記の回答の問題は、コンテンツが混在している場合は機能しないことです。たとえば、スプレッドシートから数行を強調表示してリッチテキストボックスに貼り付けると、生のテキストだけではなくなります。より良い解決策は以下のとおりです。

    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 に答える