3

私のwinformにはいくつかのテキストボックスがあります。ボタンもいくつか付いています。そのようなテキストボックスに入力してボタンをクリックすると、テキストボックスから入力フォーカスが失われ、ボタンが入力キーボードフォーカスを取得します。つまり、ボタンをクリックした瞬間にカーソルがテキストボックスから失われます。私はこの振る舞いを望んでいません。ボタンをクリックしても、テキストボックスにカーソルを保持したい。実際の状況は、テキストボックスと数字ボタンをタッチスクリーンからのみ使用することです。

4

4 に答える 4

10

Selectable標準のものから継承するが、スタイルをオフにする独自のボタン コントロールを作成してみてください。

public class ButtonEx : Button {
  public ButtonEx() {
    this.SetStyle(ControlStyles.Selectable, false);
  }
}
于 2012-04-09T19:08:38.283 に答える
4

ボタンクリックイベントハンドラーで、フォーカスを他のコントロールに明示的に設定します。ボタンが押された後にフォーカスを取得するのが賢明であると思われるコントロールを選択します。たとえば、次のようなコードを使用して、フォーカスをTextBoxに設定します。

textBox1.Focus();

これにより、ボタンがクリックされたときにボタンがフォーカスを取得できなくなります。

さらに、ボタンのTabStopプロパティをfalseに設定します。

プロパティをfalseに設定することを提案する他の回答CanFocusは、そのプロパティがボタンに対して読み取り専用であるため、機能しません。

于 2012-04-09T18:54:36.453 に答える
0

プロパティを使用してカスタムButtonクラスを作成しFocusable、次のように設定Focusableします。false

public class ButtonEx : Button
{
    [DefaultValue(true)]
    public bool Focusable
    {
        get { return GetStyle(ControlStyles.Selectable); }
        set { SetStyle(ControlStyles.Selectable, value); }
    }
}
于 2014-08-07T08:47:14.870 に答える
0

次のように、ボタン クリック イベント ハンドラのテキスト ボックスにフォーカスを設定できます。

private void Button_Click(...)
{
    FocusTextBox();
    // Do things...
}

private void FocusTextBox()
{
    textBox.Focus();
}
于 2012-04-09T18:41:02.700 に答える