Текстовое поле «блокируется», когда значение равно нулю (ожидается целое число) - PullRequest
1 голос
/ 12 марта 2012

Я работаю в приложении ac # windows с vs2010 и локальной базой данных. В одной из моих форм я использую bindingNavigator и вставил несколько текстовых полей, где некоторые из них должны быть заполнены только целыми числами.

Проблема в том, что когда я удаляю все данные внутри одного из этих текстовых полей, мышь блокируется, и я не могу перейти к другому текстовому полю или закрыть программу, если в текстовое поле не вставлен хотя бы один номер.Как я могу сделать автозаполнение себя с 0, когда ничего не вставлено и иметь возможность продолжить навигацию в программе?

Ответы [ 3 ]

3 голосов
/ 05 октября 2012

Если у вас много таких элементов управления, писать эти условия для каждого элемента управления скучно.Вы можете просто наследовать элемент управления TextBox:

public partial class NumberTextBox : TextBox
    {
        public NumberTextBox()
        {
            InitializeComponent();
        }

        private void NumberTextBox_Leave(object sender, EventArgs e)
        {
            string tTxt = ((TextBox)sender).Text;
            double tDbl;
            int tInt;
            if (tTxt == "" || !double.TryParse(tTxt, out tDbl) || !int.TryParse(tTxt, out tInt))
            {
                ((TextBox)sender).Text = "0";
            }
        }
    }
0 голосов
/ 28 марта 2012

Решение было действительно простым, проблема была в текстовом поле. Текст == пустое выражение.В событии Leave текстового поля я просто использовал код:

if (nameTextBox.Text == "") 
{ 
nameTextBox.Text = "0";
}
0 голосов
/ 13 марта 2012

Я вижу, что вы нашли решение, но вы действительно хотите использовать:

if (string.IsNullOrEmpty(nameTextBox.Text)){ nameTextBox.Text = "0"; } 

, чтобы заполнить ноль, и после этого использовать int.TryParse вместо int.Parse:

int n;
if(!int.TryParse(nameTextBox.Text, out n))
{
//handle failed parse
}
...

таким образом вы избежите возможных исключений, когда невозможно целочисленное преобразование (например, введена буква)

...