当值为空时文本框“锁定”(需要整数)

Posted

技术标签:

【中文标题】当值为空时文本框“锁定”(需要整数)【英文标题】:Textbox "locks" when value is null (integer is expected) 【发布时间】:2012-03-12 19:38:23 【问题描述】:

我正在使用 vs2010 和本地数据库的 c# windows 应用程序中工作。在我的一种形式中,我使用的是 bindingNavigator,并且我插入了一些文本框,其中一些文本框只需要用整数填充。

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

【问题讨论】:

99.99% 的时间在 SO 上,需要代码来帮助回答问题。 我能用这样的东西吗:int test = 0; if(textbox1.Text==null)textbox1.Text = test.ToString(); 在哪个事件中? 解决方案真的很简单,问题出在 textbox.Text==null 表达式中。在文本框的离开事件中,我只使用了代码: if (nameTextBox.Text == "") nameTextBox.Text = "0"; 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

int n;
if(!int.TryParse(nameTextBox.Text, out n))

//handle failed parse

...

这样可以避免整数转换不可能时可能出现的异常(例如输入字母)

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于当值为空时文本框“锁定”(需要整数)的主要内容,如果未能解决你的问题,请参考以下文章

更改文本框输入的背景颜色在为空时不起作用

VB6.0中,日期时间控件不允许为空时,采用文本框与日期时间控件相互替换赋值(解决方案)

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

如果字符串包含整数,如何调整该字符串的文本框

当文本字段为空时禁用警报按钮 Swift 3

常见控件测试点