Я работаю над веб-приложением 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();
}
}
Это отлично работает для всех клавиш, кроме backspace и delete. Конечно, он так устроен. Я углубился в эту тему и попытался переопределить событие нажатия клавиш, поэтому добавил следующий фрагмент кода:
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 тоже реагировал на него, но в моей структуре нет IsInputKey или PreviewKeyPress. Есть ли обходной путь для регистрации клавиши возврата в качестве клавиши ввода или вызова tbMessage_KeyDow [что является очень грубым подходом]? Пожалуйста помоги.