1. 程式人生 > >捕捉鍵盤事件並對事件進行處理

捕捉鍵盤事件並對事件進行處理

今天需要做一個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;
                    }
                }