如何在C# WinForms中从另一个窗体刷新用户控件?
用户控件DataGridView刷新及实例化问题解决
- 你调用
new UserControl().load_data()没效果的核心原因是操作的是内存里的全新控件实例,根本不是当前界面上已显示的那个。哪怕构造函数传this,只要用new创建,就是和界面控件完全无关的新对象,自然不会影响界面上的DataGridView。 - 正确做法是直接引用已经加载到界面上的UserControl实例:
- 举个例子,如果你的UserControl放在主窗体的Panel容器里,可以通过容器获取实例:
// 假设主窗体的Panel控件名为panelContainer var myControl = panelContainer.Controls.OfType<UserControl>().FirstOrDefault(); if (myControl != null) { myControl.load_data(); } - 更稳妥的方式是在主窗体初始化UserControl时,把它的实例保存为成员变量,之后直接调用这个变量的
load_data()方法,不用每次去容器里查找。
- 举个例子,如果你的UserControl放在主窗体的Panel容器里,可以通过容器获取实例:
- 关于SQL插入数据后的刷新:既然你已经验证
load()方法能刷新DataGridView,那只要把这个方法调用在界面上的实际控件实例上,就能正常触发数据刷新。
内容的提问来源于stack exchange,提问作者tsfdf T76
相关产品推荐
相关产品推荐

