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。若点击表头需要相应事件的话,可以用此方法。