Я работаю над веб-приложением 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.
Я хочу каким-то образом вызвать функцию tbMessage_KeyDow из // этого места принудительно оттуда для возврата.
Я искал в MSDN и обнаружил, что IsInputKey можно переопределить, чтобы он возвращал значение true, чтобы onKeyDown также отвечал на него, но в My framework нет ни IsInputKey, ни PreviewKeyPress. Есть ли обходной путь для регистрации клавиши возврата назад в качестве клавиши ввода или для вызова tbMessage_KeyDow [это очень грубый подход]? Пожалуйста, помогите.