こんにちは、私は、特定のフォームに多数のテキストボックスが移入されたC#winformアプリケーションを持っています。私は右の矢印キーを押すことによって、これはタブキーを押すのと同じベアビオを模倣するようにしたいと思います。私は本当にこれを行う方法はわかりません。C#Winform Alter Sent Keystroke
私はタブキーの操作を変更したくありません。ちょうどそのフォーム上で同じことをするための右矢印キーを取得します。
誰もが提案を提供できますか?
こんにちは、私は、特定のフォームに多数のテキストボックスが移入されたC#winformアプリケーションを持っています。私は右の矢印キーを押すことによって、これはタブキーを押すのと同じベアビオを模倣するようにしたいと思います。私は本当にこれを行う方法はわかりません。C#Winform Alter Sent Keystroke
私はタブキーの操作を変更したくありません。ちょうどそのフォーム上で同じことをするための右矢印キーを取得します。
誰もが提案を提供できますか?
...
protected override void OnKeyUp(KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
Control activeControl = this.ActiveControl;
if(activeControl == null)
{
activeControl = this;
}
this.SelectNextControl(activeControl, true, true, true, true);
e.Handled = true;
}
base.OnKeyUp(e);
}
私は、これはあなたが求めているものを達成すると思います:
private void form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
Control activeControl = form1.ActiveControl;
// may need to check for null activeControl
form1.SelectNextControl(activeControl, true, true, true, true);
}
}
をあなたが好きなアクションを実行後、トラップに、フォーム上のキーストロークをKeyDownイベントを使用することができます。例:
private void MyForm_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Right)
{
this.SelectNextControl(....);
e.Handled = true;
}
}
フォームのKeyPreviewプロパティをTrueに設定することを忘れないでください。あなたがこれを行うには、フォームでOnKeyUpをメソッドをオーバーライドする必要があり
私が代わりにイベントを使用する方法をオーバーライドします。また、私はKeyDownでそれをやっていません。キーダウンと実際のキーの押下を確認してください。 –
こんにちはブライアン、これは正常に動作するようだが、それは、それが存在するコンテナ上のコントロールを介してのみ反復する - 例えば、グループボックス。だから私は3つのグループボックスを持っている場合、それはタブキーのように次のものに飛び越えるつもりはありません –
私はコンテナで再帰的に動作すると思うSelectNextを使用するようにそれを更新します。 –