私はに取り組んでおり、このコントロールCustomControlに登録したいと思います。このコントロールが追加されるに、をModifierKeysすでに設定しKeyPerviewました。TrueForm
これで名前がBoolean付けられました。_ctrlこのブール値はtrue、キーが押されているときであり、キーが離されているときControlである必要があります。falseControl
私はこれを以下のコンデで達成しようとしましたCustomControlが、成功しませんでした!
private bool _ctrl = false;
private void MyCustomControl_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Control)
{
_ctrl = true;
}
}
private void MyCustomControl_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Control)
{
_ctrl = false;
}
}
ヒント/解決策はすべて適用されます!
アップデート
わかりました。フォーム自体でキーダウンイベントとアップイベントを実行することにしました。
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control)
{
projectBrowser.ControlKeyIsDown = true; //bool in MyCustomControl
MessageBox.Show("CTRL is PRESSED");
}
}
private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control)
{
projectBrowser.ControlKeyIsDown = false; //bool in MyCustomControl
MessageBox.Show("CTRL is DEPRESSED");
}
}
これで、KeyDownイベントがコントロールキーを検出し、メッセージボックスが表示されます。ただし、KeyUpイベントは機能せず、メッセージボックスは表示されません。何が間違っている可能性がありますか?
KeyUp次のようにイベントを変更すると、キーアップが検出されるようです。
private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.LControlKey || e.KeyCode == Keys.RControlKey || e.KeyCode == Keys.ControlKey || e.KeyCode == Keys.Control)
{
projectBrowser.ControlKeyIsDown = false;
e.Handled = true;
}
}