c # WinForms вы можете получить текстовую область NumericUpDown - PullRequest
0 голосов
/ 30 октября 2010

Возможно ли получить текстовую область элемента управления NumericUpDown? Я ищу его размер, чтобы я мог замаскировать его панелью. Я не хочу, чтобы пользователь мог редактировать И выделять текст. Это возможно? Или есть другой способ скрыть текст в текстовом поле?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 30 октября 2010

Если вы хотите запретить ручное редактирование, вы можете просто установить для свойства ReadOnly значение true.

updown.ReadOnly = true;

Если вы тоже хотите запретить выбор (интересно, зачем вам это нужно), вы можете использовать рефлексию. Я не думаю, что есть лучший способ, потому что поле upDownEdit является внутренним полем UpDownBase.

FieldInfo editProp = updown.GetType().GetField("upDownEdit", BindingFlags.Instance | BindingFlags.NonPublic);
TextBox edit = (TextBox)editProp.GetValue(updown);
edit.Enabled = false;
3 голосов
/ 30 октября 2010

Вы можете получить это, используя элемент управления Label вместо встроенного элемента управления TextBox. Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Компиляция. Перетащите новый элемент управления из верхней части панели инструментов на форму.

using System;
using System.Windows.Forms;

class UpDownLabel : NumericUpDown {
    private Label mLabel;
    private TextBox mBox;

    public UpDownLabel() {
        mBox = this.Controls[1] as TextBox;
        mBox.Enabled = false;
        mLabel = new Label();
        mLabel.Location = mBox.Location;
        mLabel.Size = mBox.Size;
        this.Controls.Add(mLabel);
        mLabel.BringToFront();
    }

    protected override void UpdateEditText() {
        base.UpdateEditText();
        if (mLabel != null) mLabel.Text = mBox.Text;
    }
}
1 голос
/ 30 октября 2010

Установите для свойства ReadOnly значение true, вот и все.

0 голосов
/ 30 октября 2010

«Правильный» способ сделать это - создать элемент управления Up-Down и метку (метка не может быть выбрана или отредактирована). Тем не менее, авторы Windows Forms, исходя из своей бесконечной мудрости, решили, что нам не нужен элемент управления Up-Down, и поэтому они не предоставили для него. Они решили, что единственная причина, по которой мы можем захотеть использовать элемент управления Up-Down, - в сочетании с элементом управления TextBox.

Элемент управления Up-Down достаточно прост, чтобы создать легкую оболочку, если вы хотите пойти по этому пути: http://msdn.microsoft.com/en-us/library/bb759880.aspx

Редактировать 1

[надрез] * * +1010

Редактировать 2

Я писал об этом здесь: http://tergiver.wordpress.com/2010/11/05/using-the-up-down-control-in-windows-forms/

...