当值为空时文本框“锁定”(需要整数)
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中,日期时间控件不允许为空时,采用文本框与日期时间控件相互替换赋值(解决方案)
设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。