2012-09-13 39 views
0

我是新來的自定義控件,我正在尋找一些幫助。自定義RichTextBox事件句柄

我想知道是否可以在我的自定義類中的「Key_Press」事件上添加驗證,而不是通過我的表單代碼中的事件。我的目標是阻止使用回車鍵& 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); 
      } 
     } 
    } 
+0

這是winforms,webforms wpf嗎? 但是不可能處理Rtb上的KeyDown或KeyUp事件? –

+0

它的勝利形式。我希望自定義控件自動執行此操作,而不是將代碼放在窗體中? – Derek

回答

2

塊通過簡單地重寫的onkeydown()方法Enter鍵。一個可用於任何RTB的簡單KeyDown事件的示例:

private void richTextBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyData == Keys.Enter) e.Handled = e.SuppressKeyPress = true; 
    } 
+1

是的,當然。正如我所說的,重寫OnKeyDown。 –

+0

對不起,我是新來的自定義控件和事件。我現在從你的解釋開始工作,非常感謝你的建議。 – Derek