C#编程经验杂谈

1、模式显示的窗体如何确定父子窗体关系?

答:ShowDialog函数有两个重载函数:ShowDialog()和ShowDialog(IWin32Window Owner);第二个函数的参数用于设置该窗体的父窗体。

 

2、顶级控件无法添加到控件?

答:MyForm myForm = new MyForm();
      container.Controls.Add(myForm);这样的话会出错,因为顶级控件无法添加到控件,通过设置TopLevel属性将该控件设置为非顶级的控件。

 

3、DataTable的Select方法

按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 DataRow 对象的数组。

用法背景:DataTable dt = 从数据库中取出的一个表;

               DataRow[] rows = dt.Select(filter);

filter过滤条件的书写:参考http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx

注意:DataTable的Select方法返回的是一个符合条件的DataRow数组,用上面的rows接收。DataRow[] rows = dt.Select(filter);这种赋值只是浅复制,也就是说rows数组中的行仍然指向dt中。

若此时将rows转换为一个表将会产生一个异常:该行已经属于另外一个表。

正确的做法是这样的:(借鉴http://fengxuechali.spaces.live.com/blog/cns!5AF6E842D6EA1621!145.entry)

(1) 取出数据库中的数据组成DataTable dt;
(2) 用DataRow  dr接收 dt.Select() 出来的值;
(3)声名一个表dt2,dt2=dt.Clone();
(4)用foreach(DataRow row in dr),和dt2.ImportRow(row) 来获取查询出来的值。

 

4窗体的Created属性判断窗体是否创建,TopMost属性设置显示在最前面。

 

5DataGridView的CellDoubleClick(object sender, DataGridViewCellEventArgs e)等类似事件,参数e中都包含了所点击的行,单元格所在行的RowIndex。点击表头此值为:-1。若点击表头需要相应事件的话,可以用此方法。

 

你可能感兴趣的:(编程,数据库,object,C#,filter)