关于frm2如何更改frm1中DataGridView控件的DataSource的问题

txwdjyh 2018-11-05 10:20:34
如题
在写一个学生信息管理
橙字为我想达到的效果
在窗体frm1的DataGridView控件中存有学生信息(DataGridView已设为public)

选中后点击修改 弹出frm2

在frm2中修改成功学生数据后

刷新frm1中DataGridView控件中的学生信息


以下为我的刷新主要代码

//重新获取数据表值
DataSet ds;
data.dataCon();
ds = data.ReData("Studentinfo");
//将值存到frm1的DataGridView中
frm1 frm= new frm1();
frm.DataGridView.DataSource = ds.Tables[0];


以上代码执行后frm1的DataGridView并没有刷新

也试过用 Controls["DataGridView"] 但是并不能 Controls["DataGridView"].DataSource = ds.Tables[0]; 这样写

图片不知道为什么上传不上来 文字应该能看懂
不知道为什么 找不到原因 求大佬指点 写一下午了 语言也许组织不流畅 见谅
...全文
57 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
txwdjyh 2018-11-08
  • 打赏
  • 举报
回复
谢谢各位大佬
我最终使用委托实现了我所需要的效果
早起晚睡 2018-11-06
  • 打赏
  • 举报
回复
版主是明白人直接新实例再绑定就OK了
enaking 2018-11-06
  • 打赏
  • 举报
回复
由于你代码展示不完整,只能猜一下,你new了一个frm1,这个frm1和你现在显示的frm1应该不是同一个实例。就相当于你一开始看到的是张三,然后你又new一个张三1。然后你给张三1脸上画胡子,但你看到的却一直是张三。所以就没变化了。
enaking 2018-11-06
  • 打赏
  • 举报
回复
由于你代码展示不完整,只能猜一下,你new了一个frm1,这个frm1和你现在显示的frm1应该不是同一个实例。
张天星 2018-11-06
  • 打赏
  • 举报
回复
事件,或者说委托,子窗口定义委托,在修改成功之后调用定义的委托。
而父窗口中写一个方法委托给子窗口,这个方法中写对父窗口自身DataGridView的操作。
https://bbs.csdn.net/topics/392472071这个是我关于其他问题的询问,
不过其中7楼版主的回复内容,我觉得你可以套用。
良朋 2018-11-06
  • 打赏
  • 举报
回复

Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();


你的frm2实例化时,加上上面第二行代码。

frm2调用frm1控件这样调用:

Frm1 f1 = (Frm1 )this.Owner;
f1.DataGridView.DataSource = ds.Tables[0];
小马快跑! 2018-11-06
  • 打赏
  • 举报
回复
在form2中定义委托,在form中写一个修改Datagridview的方法,再把方法委托给form2中定义委托,在form2中调用委托的方法就行了。
良朋 2018-11-06
  • 打赏
  • 举报
回复
frm1 frm= new frm1(); 你又把frm1实例化了一遍,,frm1.Desinger.cs又会重新执行了一遍,此时grid的datasousre还没更新,所以你看不到,而且如果上面控件多的话,就浪费了时间和性能。
前几天刚好有个帖子,和你这个类似。 有我的回复,很详细也很简单,你参考下:
https://bbs.csdn.net/topics/392471171
xuzuning 2018-11-05
  • 打赏
  • 举报
回复
frm1 frm= new frm1();
frm.DataGridView.DataSource = ds.Tables[0];

你在 form1 的新实例里做刷新,谁能看的到?
大鱼> 2018-11-05
  • 打赏
  • 举报
回复
使用委托就可以了,具体用法百度会告诉你

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧