web-dev-qa-db-ja.com

タブイン時にWinforms NumericUpDownのすべてのテキストを選択するにはどうすればよいですか?

ユーザーがNumericUpDownにタブ移動すると、すべてのテキストが選択されます。これは可能ですか?

52
Aidan Ryan
private void NumericUpDown1_Enter(object sender, EventArgs e)
{
    NumericUpDown1.Select(0, NumericUpDown1.Text.Length);
}

(TextプロパティはIntellisenseで非表示になっていますが、そこにあります)

116
Jon B

Tab and Clickを検索してきた将来の人々のためにこれを追加したかった。

Jon Bの回答はタブに最適ですが、クリックを含めるように変更する必要がありました

以下は、タブインまたはクリックするとテキストを選択します。クリックしてボックスに入力すると、テキストが選択されます。ボックスに既に集中している場合は、クリックで通常の動作が実行されます。

    bool selectByMouse = false;

    private void quickBoxs_Enter(object sender, EventArgs e)
    {
        NumericUpDown curBox = sender as NumericUpDown;
        curBox.Select();
        curBox.Select(0, curBox.Text.Length);
        if (MouseButtons == MouseButtons.Left)
        {
            selectByMouse = true;
        }
    }

    private void quickBoxs_MouseDown(object sender, MouseEventArgs e)
    {
        NumericUpDown curBox = sender as NumericUpDown;
        if (selectByMouse)
        {
            curBox.Select(0, curBox.Text.Length);
            selectByMouse = false;
        }
    }

これを複数のnumericUpDownコントロールに使用できます。 EnterイベントとMouseDownイベントを設定するだけです

8
BrinkDaDrink

私は同じ問題を抱えて周りを見回していましたが、これは私のために機能します。最初にアイテムを選択し、2番目のものはテキストを選択します、将来的に役立つことを願っています

myNumericUpDown.Select();
 myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length);
4
Kross

これを実現するための拡張メソッドを作成しました。

VB:

<Extension()>
Public Sub SelectAll(myNumericUpDown As NumericUpDown)
    myNumericUpDown.Select(0, myNumericUpDown.Text.Length)
End Sub

C#:

public static void SelectAll(this NumericUpDown numericUpDown)
    numericUpDown.Select(0, myNumericUpDown.Text.Length)
End Sub
2
cjbarth

複数のnumericupdownボックスがあり、これをすべてに達成したいと思いました。私は造った:

private void num_Enter(object sender, EventArgs e)
{
    NumericUpDown box = sender as NumericUpDown;
    box.Select();
    box.Select(0, num_Shortage.Value.ToString().Length);
}

次に、この機能を各ボックスのEnterイベントに関連付けることで(これは行いませんでした)、目標が達成されました。私は初心者なので、理解するのにしばらくかかりました。これが他の誰かを助けることを願っています

0
Nicolas