私はSilverlightWebアプリに取り組んでいます。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();
}
}
これは、バックスペースと削除を除くすべてのキーで正常に機能します。もちろんこのように機能するように作られています。これについてさらに掘り下げて、キーダウンイベントをオーバーライドしようとしたので、次のコードスニペットを追加しました。
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 [非常に大雑把なアプローチ]を呼び出すための回避策はありますか?助けてください。