Winform程序中对TextBox数据绑定的空值校验问题 Winform窗体程序中,我有若干个TextBox双向绑定到数据库某个表中的几个int字段,这几个字段都允许空。当我通过程序修改某一条记录时,假设之前TextBox中有值,此时我想删除其值进行保存(即希望数据库此记录字段为空),控件失去焦点时触发默认绑定校验失败,光标不可移出TextBox。请教大家,在这种情况下,我应该如何将此字段置空? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为对应的Binding对象增加Format事件和Parse事件处理方法。 Binding bind = new Binding("Text", bindsourse, name, true, DataSourceUpdateMode.OnValidation, DBNull.Value); tb.DataBindings.Add(bind); bind.DataSourceNullValue = DBNull.Value; if (((System.Data.DataView)bindsourse.DataSource).Table.Columns[name].DataType.FullName == "System.Decimal") { //下面两句用于处理数值型字段绑定无法设置空值问题 bind.Format += new ConvertEventHandler(bind_Format); bind.Parse += new ConvertEventHandler(bind_Parse); } Binding bind = new Binding("Text", bindsourse, name, true, DataSourceUpdateMode.OnValidation, DBNull.Value); tb.DataBindings.Add(bind); bind.DataSourceNullValue = DBNull.Value; if (((System.Data.DataView)bindsourse.DataSource).Table.Columns[name].DataType.FullName == "System.Decimal") { //下面两句用于处理数值型字段绑定无法设置空值问题 bind.Format += new ConvertEventHandler(bind_Format); bind.Parse += new ConvertEventHandler(bind_Parse); }void bind_Format(object sender, ConvertEventArgs e)//绑定控件时发生 { if (e.Value == DBNull.Value) e.Value = ""; } void bind_Parse(object sender, ConvertEventArgs e)//控件值更改时发生 { if (e.Value.ToString() == "") e.Value = DBNull.Value; } C/S结构的系统客户端与数据库的连接问题 C#如何判断datagridview1的数据发生了改变? 紧急 添加到压缩文件的的文件夹问题 如何设置WCF返回数据的格式(JSON)? C#打包应用程序,能否让在没有装.net上运行 多个用户同时操作同一个表时,怎样避免数据不同步? 登录代码问题 c# 像QQ2009这样的圆角窗体怎么做的? C#中可否用如下方法传递参数来操作Oracle数据? 《C#入门经典5版》中的小BUG,求原因 datagrid .net compact framework修改列名称 请问,winform怎么获取其他网站某页面的一个js变量的值
tb.DataBindings.Add(bind);
bind.DataSourceNullValue = DBNull.Value;
if (((System.Data.DataView)bindsourse.DataSource).Table.Columns[name].DataType.FullName == "System.Decimal")
{
//下面两句用于处理数值型字段绑定无法设置空值问题
bind.Format += new ConvertEventHandler(bind_Format);
bind.Parse += new ConvertEventHandler(bind_Parse);
}
Binding bind = new Binding("Text", bindsourse, name, true, DataSourceUpdateMode.OnValidation, DBNull.Value);
tb.DataBindings.Add(bind);
bind.DataSourceNullValue = DBNull.Value;
if (((System.Data.DataView)bindsourse.DataSource).Table.Columns[name].DataType.FullName == "System.Decimal")
{
//下面两句用于处理数值型字段绑定无法设置空值问题
bind.Format += new ConvertEventHandler(bind_Format);
bind.Parse += new ConvertEventHandler(bind_Parse);
}
void bind_Format(object sender, ConvertEventArgs e)//绑定控件时发生
{
if (e.Value == DBNull.Value)
e.Value = "";
}
void bind_Parse(object sender, ConvertEventArgs e)//控件值更改时发生
{
if (e.Value.ToString() == "")
e.Value = DBNull.Value;
}