值为null时,文本框“锁定”(预期为整数)

时间:2012-03-12 19:38:23

标签: c# winforms visual-studio-2010 textbox sql-server-ce

我正在使用vs2010和本地数据库在c#windows应用程序中工作。在我的一个表单中,我使用的是bindingNavigator,我插入了一些Textboxes,其中一些只需要用整数填充。

问题在于,当我从其中一个文本框中删除所有数据时,鼠标被锁定,我无法移动到另一个文本框或关闭程序,除非文本框中至少插入了一个数字。当没有插入任何内容并且能够继续导航到程序时,如何使其自动完成0?

3 个答案:

答案 0 :(得分:3)

如果你有很多这样的控件,那么为每个控件编写这个条件都很无聊。您可以只继承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";
            }
        }
    }

答案 1 :(得分:0)

我看到你找到了解决方案,但你确实想要使用:

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

填写零,然后在int.Parse上使用int.TryParse:

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

这样,当不可能进行整数转换时(例如,输入一个字母),您将避免可能的异常

答案 2 :(得分:0)

解决方案很简单,问题出在textbox.Text == null表达式中。在文本框的Leave事件中,我刚使用了代码:

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