2

ユーザーがテキストボックスに表示される可能性のある何かを入力しているかどうかを検出する必要がある WPF アプリケーションがあります。WinForms には、印刷可能な文字が入力されたときにのみ呼び出されるという点で、OnKeyDown とは異なる優れた OnKeyPressed オーバーライドがありました (たとえば、'A' と 'a' は区別されますが、一番上の行の '1' とまた、'Shift' などのキーも無視されました) WPF でその機能を複製する必要があります。

これで、OnKeyDown をオーバーライドしてキーコードを検査できることがわかりましたが、それは、テキスト ボックスに何かが表示される可能性のあるすべてのキーを手動でテストすることを意味します。これは、私が見つけた他の同様のSOの質問からのコンセンサスのようですが、APIから除外されるような基本的なものは信じられません.

モンスターの if-tree とは別に、「ハッキーな」解決策の 1 つは、メモリ内テキスト ボックスを使用し、それにキーコードを渡し、テキストの長さがあるかどうかを検査することです。しかし、可能な解決策としてそれを入力しても吐き気がします!うっ!気持ち悪い!

SO ...ユーザーがキーを押した場合に印刷可能な文字が表示されるかどうかを確認する最も簡単な方法は何ですか?

ティア、

マーク

4

1 に答える 1

3

実際、見つけたばかりだと思うので、他の人のために回答を投稿しています。「キー」イベントはまったく使用しません。WPF は、それらをテキスト値からより明確に分離します。そのため、OnPreviewTextInputand/orOnTextInput関数をオーバーライドします。実際に入力されたものを取得するに.Textは、単純な文字列を返すイベント引数のプロパティを確認してください。

やった!

これが他の人に役立つことを願っています! 私を壁に追いやっていた!

于 2011-05-16T00:15:57.603 に答える