天天看點

Silverlight中文本框添加回車事件後,換行無法清除的解決方法

在開發Silverlight的項目中,為了更好的使用者體驗,我們常要給一些控件添加一些快捷鍵。然而,在Silverlight中當使用者回車送出後,光标停留在文本框的第二行怎麼也清除不掉,經過一段時間研究,終于找到解決方法,特寫此文章與大家分享一下:

有時候我們在網站中,比如使用者評論,添加一個Enter鍵盤事件,快速送出,需要給文本框添加鍵盤事件處理方法,在這裡先說一下組合鍵的使用方法,代碼如下:

private void txtToSend_KeyDown(object sender, KeyEventArgs e)

{

    ModifierKeys keys = Keyboard.Modifiers;

    if (keys == ModifierKeys.Control && (e.Key == Key.Enter))

    {

      處理方法

    }

}

這裡主要需要注意的是ModifierKeys,這裡與WinForm中不同。

在Silverlight中,給文本框添加了回車送出事件後,但是回車過後,清除文本框内容,發現光标停留在文本框第二行,在背景用代碼怎麼也清除不掉,下面來講一下解決辦法:

設定文本框的 AcceptsReturn 為 False ,這一文本框就不會再換行啦!

但是,新的問題來了,文本框的内容怎麼換行呢?當然我們想到了使用Ctrl + Enter 來換行,實作代碼如下:

運作後,卻發現并不能實作換行,隻是光标移動到了開頭,解決辦法就是添加下面一行代碼:

txtToSend.SelectionStart = txtToSend.Text.Length;

使用這句話,設定光标的位置,這樣就可以看到效果了。當然我們還有實作回車送出資訊的功能。

完整代碼如下:

注意,當你按下Ctrl + Enter 時,同樣會觸發Enter事件,是以要把Enter的處理方法放在Else裡面,這樣就沒有問題了。

當然,為了更好的使用者體驗,我們可以添加一個下拉框,讓使用者選中自己的操作方式,選中快捷鍵的功能,這裡寫兩個鍵盤處理事件,代碼如下:

然後,在下拉框的SelectionChanged事件中添加如下代碼:

這裡要注意的是,頁面初始化時,控件能還沒有初始化完成,是以要判斷一下控件是否為NULL。

繼續閱讀