0

2 つの質問があります。最初に、テキストボックスで (CTRL + C ) を防止する次のコードのようなことをしたいのですが、うまくいきません。メッセージボックスには何も表示されません。

2 番目の質問は、ユーザーが ( CTRL + C ) を押したときに何かを行う方法です。クリップボードに何も保存されないか、( CTRL + C ) を押した後に値が自動的に削除されます。

コードは次のとおりです。

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.C && e.KeyCode == Keys.LControlKey)
        {
            MessageBox.Show("NOT ALLOWED");
        }

    }
4

2 に答える 2

3

KeyCodefor の等価性を 2 つの異なる値と比較していますが、両方になることはありません。私はあなたがチェックするつもりだったと思いますControl

if(e.KeyCode == Keys.C && e.Control) {
    MessageBox.Show("NOT ALLOWED");
}

コピー操作の停止に関しては、次のように簡単です。

e.SuppressKeyPress = true;

また、次を使用していつでもクリップボードをクリアできます。

Clipboard.Clear();
于 2012-08-04T17:17:49.303 に答える
0

システム レベルのキーボード フックを使用して、キーボード ストロークの任意の組み合わせをインターセプトできます。

キーボード フック関数は、.net の VC++ で記述されています。ただし、C# で使用する場合は、pinvoke ベースのラッパー ライブラリがあります。

.net でキーボード フックを検索します。

フックには、アプリケーション レベルとシステム レベルの 2 種類があります。要件に応じて、正しい選択を行うことができます。

これがあなたがさらに進むのに役立つことを願っています。

于 2012-08-04T17:22:51.320 に答える