Как выделить весь текст в Winforms NumericUpDown на вкладке в? - PullRequest
51 голосов
/ 20 февраля 2009

Когда пользователь вкладывает в мой NumericUpDown, я бы хотел, чтобы весь текст был выделен. Возможно ли это?

Ответы [ 6 ]

113 голосов
/ 20 февраля 2009
private void NumericUpDown1_Enter(object sender, EventArgs e)
{
    NumericUpDown1.Select(0, NumericUpDown1.Text.Length);
}

(Обратите внимание, что свойство Text скрыто в Intellisense, но оно есть)

8 голосов
/ 20 ноября 2014

Я хотел бы добавить к этому для будущих людей, которые искали Tab и Click.

Jon B ответ отлично подходит для Tab, но мне нужно было изменить, чтобы включить клик

Ниже будет выделен текст, если вы вкладываете или нажимаете на него. Если вы нажмете и введете поле, то он выделит текст. Если вы уже сфокусированы на окне, то щелчок сделает то, что он обычно делает.

    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

4 голосов
/ 08 ноября 2014

Я искал вокруг, у меня была та же проблема, и это работает для меня, сначала выберите пункт, а второй выбирает текст, надеюсь, это поможет в будущем

myNumericUpDown.Select();
 myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length);
2 голосов
/ 15 октября 2012

Я создал метод расширения для этого:

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
0 голосов
/ 12 января 2017

У меня было несколько числовых окон вниз и я хотел добиться этого для всех. Я создал:

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

Затем, связав эту функцию с вводом события для каждого поля (что я не делал), моя цель была достигнута. Мне понадобилось время, чтобы понять, как я начинающий. Надеюсь, что это поможет кому-то еще

0 голосов
/ 16 сентября 2014

Попробуйте

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