C# WinForms вы можете получить текстовую область NumericUpDown
Можно ли получить текстовую область элемента управления NumericUpDown? Я рассчитываю получить его размер, чтобы я мог замаскировать его панелью. Я не хочу, чтобы пользователь мог редактировать И выделять текст. Это возможно? Или есть другой способ скрыть текст в текстовом поле?
Благодарю.
4 ответа
Вы можете получить это, используя элемент управления 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;
}
}
Если вы хотите запретить редактирование вручную, вы можете просто установить 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;
"Правильный" способ сделать это - создать элемент управления Up-Down и метку (метка не может быть выбрана или отредактирована). Однако авторы Windows Forms в своей бесконечной мудрости решили, что нам не нужен элемент управления Up-Down, и поэтому они не предоставили.NET-оболочку для него. Они решили, что единственная причина, по которой мы можем захотеть использовать элемент управления "вверх-вниз", - в сочетании с элементом управления TextBox.
Элемент управления Up-Down достаточно прост, чтобы создать легкую оболочку, если вы хотите пойти по этому пути: http://msdn.microsoft.com/en-us/library/bb759880.aspx
Редактировать 1
[Надрез]
Редактировать 2
Я писал об этом здесь: http://tergiver.wordpress.com/2010/11/05/using-the-up-down-control-in-windows-forms/