Проверьте, пуст ли NumericUpDown
Как проверить, оставил ли пользователь NumericUpDown
управление пустое, удаление значения на нем?
Поэтому я могу переназначить его значение 0.
6 ответов
if(NumericUpDown1.Text == "")
{
// If the value in the numeric updown is an empty string, replace with 0.
NumericUpDown1.Text = "0";
}
может быть полезно использовать проверенное событие и запросить свойство text
private void myNumericUpDown_Validated(object sender, EventArgs e)
{
if (myNumericUpDown.Text == "")
{
myNumericUpDown.Text = "0";
}
}
попробуй такое
if (string.IsNullOrEmpty(((Control)this.nud1).Text))
{
//null
}
else
{
//have value
}
Если вы хотите запретить пустое значение NumericUpDown
, просто использовать этот класс. Его эффект заключается в том, что после того, как пользователь пытается стереть значение элемента управления с выбрать-все + клавиша backspace, фактическое числовое значение задается снова. Это не очень раздражает, так как пользователь все еще может select-all + введите числовую цифру начать редактирование нового числового значения.
sealed class NumericUpDownEmptyValueForbidder {
internal NumericUpDownEmptyValueForbidder(NumericUpDown numericUpDown) {
Debug.Assert(numericUpDown != null);
m_NumericUpDown = numericUpDown;
m_NumericUpDown.MouseUp += delegate { Update(); };
m_NumericUpDown.KeyUp += delegate { Update(); };
m_NumericUpDown.ValueChanged += delegate { Update(); };
m_NumericUpDown.Enter += delegate { Update(); };
}
readonly NumericUpDown m_NumericUpDown;
string m_LastKnownValueText;
internal void Update() {
var text = m_NumericUpDown.Text;
if (text.Length == 0) {
if (!string.IsNullOrEmpty(m_LastKnownValueText)) {
m_NumericUpDown.Text = m_LastKnownValueText;
}
return;
}
Debug.Assert(text.Length > 0);
m_LastKnownValueText = text;
}
}
даже если пользователь удалил контент numericUpDown
control, его значение все еще остается.upDown.Text
будет "", но upDown.Value
будет предыдущим введенным допустимым значением.
Поэтому мой способ "предотвратить" пользователя, чтобы оставить элемент управления пустым, на onLeave
событие, я установил:
upDown.Text = upDown.Value.ToString();