1。AddNew方法增加一行时,每一个字段都默认为空值,有些情况下必须为字段设置默认值,否则绑定后增加一行会报错(比如将bit型字段绑定到复选框)
ds.Tables["ZL"].Columns["KY"].DefaultValue=0; //必须!
this.ckbKY.DataBindings.Add("Checked",ds,"ZL.KY");
2。下拉框必须先绑定可选项再绑定值,达到为其设置选项的目的
this.cmbSSLB.DataSource=ds.Tables["SSLB"];
this.cmbSSLB.DisplayMember="SSLB";
this.cmbSSLB.ValueMember="SSLB";
this.cmbSSLB.DataBindings.Add("SelectedValue",ds,"ZL.SSLB");
3。采用DataRelation可以实现表间关系。如下实现dgrdYHZ当前行变动时,lbCY数据相应变动。
//成员关系
DataRelation dr1=new DataRelation("CY",ds.Tables["YHZ"].Columns["YHZM"],ds.Tables["CY"].Columns["YHZM"]);
ds.Relations.Add(dr1);
//绑定数据
this.dgrdYHZ.SetDataBinding(ds, "YHZ");
this.lbCY.DataSource=ds;
this.lbCY.DisplayMember="YHZ.CY.DLM";
this.lbCY.ValueMember="YHZ.CY.DLM";
4。ListControl的Item为object类型,可将其成员指定为DisplayMember、ValueMember。
5。Binding类的Format、Parse事件可用来实现灵活的数据绑定。
6。在文本框输入n个中文时,会发生n个KeyPress事件、n个TextChanged事件。若要禁止输入,可以在KeyPress中写:
e.Handled=True;
this.Focus();//关键的一句。否则只能禁止西文输入,不能禁止中文输入
7。DataRow[ ]的第二个参数可以用来获取不同版本的数据。
8。使用反射的两个步骤:
System.Reflection.FieldInfo fi=this.GetType().GetField(tbb.Tag.ToString(),System.Reflection.BindingFlags.NonPublic|System.Reflection.BindingFlags.Instance);
MenuItem mi=fi.GetValue(this) as MenuItem; //从this中获取实例或者静态成员
9。文本框光标位置控制:
txtTemp.SelectionStart=pos;
txtTemp.SelectionLength=0;
txtTemp.ScrollToCaret();
10。vs.net2003的splitter控件有bug,注意以下两点可以避免(假定为左右型):
1)必须保证分隔条在左控件之前加载(对右控件的加载顺序没有要求,这部分代码在InitializeComponent中,是设计器自动生成的,但有bug,可手工调整位置);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.tcLeft);
2)左控件、分隔条、右控件的Dock属性依次设为Left、Left、Fill。
11。.NET打包时,项目资源中中每个“生成操作”属性为“内容”的文件在部署项目中将作为“内容文件”存在(部署项目-添加-项目输出,可以看到这个选项)