3

私はここの仲間と同様のことを達成しようとしていますが、そこに答えを出すと、大したことではありませんが、ユーザーのPOVから見れば醜いバグが少し残ります:

キープレスデータをテキストボックスに入れるときに、ユーザーが文字の前に修飾キーを押すと(1つのように)、修飾キーのキー名を含むテキストボックスが入力されます。つまり、「CTRL + SHIFT + ShiftKey」のような結果が得られます。最後のキーコードを抑制するために私がやろうとすることはすべて、実際のキーも抑制してしまいます。

これは、私が求めている抑制なしの私の基本的な試みです(ブロック性を許してください。

String pressed ="";
e.SuppressKeyPress = true;
if ((e.Modifiers & Keys.Control) > 0)
{
    pressed += "CTRL + ";
}
if ((e.Modifiers & Keys.Alt) > 0)
{
    pressed += "ALT + ";
}
if ((e.Modifiers & Keys.Shift) > 0)
{
    pressed += "SHIFT + ";
}


    pressed += e.KeyCode; 


    txtCopyKey.Text = pressed;

うまくいけば、私が求めていることについてここで十分に明確です。

4

2 に答える 2

1

修飾子フラグを削除できます:

pressed += (e.KeyCode & ~Keys.Modifiers & ~Keys.ShiftKey  & ~Keys.ControlKey);
于 2010-01-04T13:04:21.960 に答える