2

リッチテキストボックスのテキストボックスを削除できないようにしようとしています。プロジェクトは Windows フォームを使用しています。

ここに私が持っているコードがあります:

    private void Form1_Load(object sender, EventArgs e)
    {

        richTextBox1.KeyPress += new KeyPressEventHandler(richTextBox1_KeyPress);
    }


    void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)8)
        {
            e.Handled = true;
            MessageBox.Show("Try not to delete... write freely and openly");
            //The msgbox shows, but the delete still happens within the form.

        }
    }

メッセージボックスを表示せず、削除を停止しません:

    private void Form1_Load(object sender, EventArgs e)
    {
        richTextBox1.KeyDown += new KeyEventHandler(richTextBox1_KeyDown);
    }
    private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Delete)
        {
            e.Handled = true;
            MessageBox.Show("Delete Pressed");
            // Does not show message box...
        }
    }
4

5 に答える 5

1

KeyPress イベントの代わりに、RichText Box で KeyDown を使用します。

これを試して、RichText Box のテキストが削除されないようにしてください

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 46)
                e.Handled = true;
        }

削除とバックスペースの両方を許可しない場合は、次のように KeyDown イベントを変更できます

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 8 || e.KeyValue == 46)
                e.Handled = true;
        }
于 2015-02-16T15:15:35.167 に答える
1

の MSDN ドキュメントによるとKeyPressEventArgs.KeyChar、そのイベントを使用して DELETE キーを取得または設定することはできません。代わりにを使用し、およびイベントKeyEventArgs.KeyCodeにサブスクライブする必要があります。KeyDownKeyUp

于 2013-06-07T20:15:32.783 に答える