3

この問題に関するいくつかの記事を読みました。基本的に、下位互換性のために、PageDown と PageUp はそれぞれ Next と Prior にリンクされます。これに関する問題は、必要な値を取得するための信頼できる方法がないことです (少なくとも、私が見ることができる方法はありません)。

良い説明については、こちらを参照してください。かなり古いですが、今ではこれに対処するために何かが行われたのではないかと思いました。

現在、私が見ることができる2つのオプションがあります。

  1. Enum.GetNames(typeof (Keys)).GetValue(e.KeyValue);

これは、「PageUp」の場合は「Prior」を返しますが、「PageDown」の場合は「PageDown」を返します。

  1. e.KeyCode.ToString();

これは、"PageUp" の場合は "PageUp" を返しますが、"PageDown" の場合は "Next" を返します。

手動で処理できますが、このような別のインスタンスがある場合はどうなりますか? 誰かがより良い解決策を持っていますか?

4

1 に答える 1

1

おそらく最善の方法は、ルックアップ テーブルを作成して列挙値を変換することです。

列挙値を文字列にマップするディクショナリを使用してルックアップ テーブルを実装できます。ディクショナリに列挙値が含まれていない場合は、Enum.ToString() にフォールバックして値を取得します。そうすれば、辞書に例外 (PageUp や PageDown など) を追加するだけで済みます。

(これらの文字列をユーザーに表示していて、文字列を国際化したい場合は、ほとんどの文字列に翻訳されたエントリを追加する必要があることに注意してください。)

于 2013-10-02T08:15:35.090 に答える