Обнаружение Backspace при нажатии клавишиC#

Место общения программистов C#
Ответить
Anonymous
 Обнаружение Backspace при нажатии клавиши

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/791 ... on-keydown
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»