刚才始接触C#,以前用VFP,不是很习惯。
在一个窗体Form1的dataGridView中显示数据,点新增/修改的时候另外弹出一个窗体Form2(模式表单),然后点保存到SQL SERVER后台。
我现在是在Form1点修改的时候把行赋值给N个变量(用public static),然后在Form2 Load中再赋值给每一个文本框,然后点保存Insert/Update,再刷新dataGridView。
有没有更好的方式,可以直接在Form2 Load读取Form2 dataGridView中行的数据,保存的时候直接刷新dataGridView;另外怎么在新增之后dataGridView自动跳到新增的行上?谢谢。
在一个窗体Form1的dataGridView中显示数据,点新增/修改的时候另外弹出一个窗体Form2(模式表单),然后点保存到SQL SERVER后台。
我现在是在Form1点修改的时候把行赋值给N个变量(用public static),然后在Form2 Load中再赋值给每一个文本框,然后点保存Insert/Update,再刷新dataGridView。
有没有更好的方式,可以直接在Form2 Load读取Form2 dataGridView中行的数据,保存的时候直接刷新dataGridView;另外怎么在新增之后dataGridView自动跳到新增的行上?谢谢。
解决方案 »
- 在线等又一窗体问题
- this关键字
- 不是很明白,请指教sql语句
- c#的一个小问题 没弄清楚 帮忙解决下
- 输入code后,如何按下回车键检索name,把name显示在后面的lable中
- 如何对XP中的Thumb.db数据库进行更新?
- 小问题,怎样在codebehind里写代码让控件添加到页面上显示
- 为什么notifyIcon控件没有invoke函数
- 让远程Linux机器运行指定的程序
- 怎么得到返回值
- 关于中文作为参数的问题
- XmlNodeList cells = doc.SelectNodes("/Report/Body/ReportItems/Table/Header/TableRows/TableRow/TableCells")//出错了吗??
所以你可以在打开Form2的时候把Form1的实例引用传递到Form2里去,这样Form2里就可以操作Form1上的public的成员了先能获得新增行的index,然后用DataGridView的相应方法(具体方法名不记得了,但一定有这样一个方法)选中即可
不过我感觉用窗体来新增、修改、删除显得比较专业。
怎么样在打开Form2的时候把Form1的实例引用传递到Form2里去,请指教,谢谢!
1.构造注入,在Form2的构造上加上一个Form1类型参数
在Form1里写:
Form2 f2 = new Form2(this);2.setter或方法注入,在Form2增加一个可写的属性或方法来设置Form2 f2 = new Form2();
f2.RelationForm = this; // 或f2.SetRelationForm(this);
那么可以像zhgroup说的,做一个中间的数据载体来传递数据,这样可以解除Form1和Form2之间的偶尔,各自都只用关心操作这个中间的数据载体,而且还可以重用.当然这样做的代价就是麻烦点,要多写些代码.至于用哪种方式,需要你自己根据实际情况来权衡.