捕捉鍵盤事件並對事件進行處理
阿新 • • 發佈:2019-02-14
今天需要做一個textbox控制元件,其主要功能是需要顯示行號,並最多可以輸入五行
顯示行號可以使用AvalonEdit第三方控制元件實現,但是並不能設定最大行數,折騰兩天之後,在技術總監的幫助下想到使用鍵盤捕捉事件。
由於我是使用回車鍵進行換行,就先使用previewKeyboardDown事件,根據引數判斷是否是回車鍵,enter,然後在拿到當前控制元件,AvalonEdit中的行數是否大於等於5,如果是的話,就把該key.handler設定為true。這個handler是用來判斷事件是否已完成的。
程式碼如下
if (e.Key == System.Windows.Input.Key.Enter)
{//如果是回車的話,判斷控制元件中此時的行數
ProTextEditor _eitor = sender as ProTextEditor;
IList<DocumentLine> li = _eitor.TextArea.Document.Lines;
//如果大於等於5,取消鍵盤事件
if (li.Count >= 5)
{
e.Handled = true;
}
}