0

カスタム コントロールを初めて使用するので、助けを求めています。

フォーム コードのイベントではなく、カスタム クラス内の「Key_Press」などのイベントに検証を追加できるかどうかを知りたいです。コントロールの Return キーと Enter キーの使用をブロックすることを目指しています。

以下のコードで、カスタムのRichTextBoxを作成しました:-

public class CustomRTB : RichTextBox
    {
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {

            if ((keyData == (Keys.Control | Keys.V)))
            {
                IDataObject iData = Clipboard.GetDataObject();

                if (iData.GetDataPresent(DataFormats.Text))
                {
                    string contents = Clipboard.GetText().Replace("\r\n", " "); 
                    Clipboard.SetData(DataFormats.Text, contents);
                    this.Paste();
                }

                return true;
            }
            else
            {
                return base.ProcessCmdKey(ref msg, keyData);
            }
        }
    }
4

1 に答える 1

2

OnKeyDown() メソッドをオーバーライドするだけで、Enter キーをブロックします。任意の RTB で機能するプレーンな KeyDown イベントの例:

    private void richTextBox1_KeyDown(object sender, KeyEventArgs e) {
        if (e.KeyData == Keys.Enter) e.Handled = e.SuppressKeyPress = true;
    }
于 2012-09-13T17:55:54.400 に答える