我正在开发一个 Silverlight 网络应用程序。它与发送 SMS 的模块交互。我想将文本限制为 160 并显示一个计数器。我是这样做的:
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 函数中,我注册了所有击键。在这里将 Handler 设置为 false 没有帮助,我仍然无法退格来触发 tbMessage_KeyDow。
我想以某种方式从 //this 地方强制调用 tbMessage_KeyDow 函数,以便退格。
我搜索了 MSDN,发现 IsInputKey 可以被覆盖以返回 true,以便 onKeyDown 也响应它,但我的框架既没有 IsInputKey 也没有 PreviewKeyPress。是否有将退格键注册为输入键或调用 tbMessage_KeyDow [这是非常粗略的方法] 的解决方法?请帮忙。