我正在研究Silverlight Web應用程序。它與發送SMS的模塊進行交互。我想限制文本到160並顯示一個計數器。我這樣做:KeyDown上的Backspace檢測
public partial class SendSMSView
{
public SendSMSView()
{
InitializeComponent();
ApplyTheme();
}
protected void tbMessage_KeyDown(object sender, KeyEventArgs e)
{
count = 160 - this.tbMessage.Text.Length;
this.lblCount.Content = count.ToString();
}
}
這適用於所有的鍵,除了退格和刪除。當然,它的功能就是這樣。我挖了這個,並試圖重寫keydown事件,所以我添加了下面的代碼片段:
public class CustomTextBox : TextBox
{
public CustomTextBox(): base()
{
}
protected override void OnKeyDown(KeyEventArgs e)
{
e.handler=false;
base.OnKeyDown(e);
//this place
}
}
在onkeydown事件的功能我得到的所有的擊鍵記錄。在這裏設置處理程序爲false不起作用,仍然無法取消退格鍵來觸發tbMessage_KeyDow。
我想以某種方式從/強制從這裏退出的位置調用tbMessage_KeyDow函數。
我搜索了MSDN,發現IsInputKey可以重寫爲true,以便onKeyDown也能對此做出響應,但是我的框架既沒有IsInputKey也沒有PreviewKeyPress。有沒有一種解決方法可以將退格鍵註冊爲輸入鍵,或者調用tbMessage_KeyDow [這是非常粗糙的方法]?請幫忙。
由於您正在使用'this.tbMessage.Text.Length'退格,並且刪除將反映在字符串'Text'中。或者你的意思是別的嗎? – Stefan
爲什麼不使用[textchanged](http://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.textchanged%28v=vs.95%29.aspx)事件代替keydown?只是計算每次更改文本框的內容 – weberik
謝謝。 TextChanged工作後,一小會兒擺弄。 – whizzyifti