winform刷新父窗体中控件的问题

wangliang8229780 2009-05-14 07:22:47
问题描述:

主窗体中有一个combobox控件(用于绑定分类),已经绑定,代码如下:

public void GetTypeName()
{
this.cboType.DataSource = clientBLL.GetTypeName().Tables[0].DefaultView;
this.cboType.DisplayMember = "TypeName";
this.cboType.ValueMember = "Id";
}


窗体中有个按钮,为添加分类的按钮.打开添加分类窗体,添加所需分类之后Hide()当前窗体.
请问如何在父窗体中刷新combobox控件,使其显示刚才已添加的新分类?

现在的程序必须关闭主窗体之后重新打开,才能看到添加后的分类!

期盼高手前来解答!
...全文
323 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoweiting0609 2009-05-14
  • 打赏
  • 举报
回复
mark
mylzw 2009-05-14
  • 打赏
  • 举报
回复
其实楼上的已经是正解了!
我这里再给你说个你容易理解的。
让你添加分类的子窗体一模式的方式打开:

子窗体.ShowDialog(); //模式化子窗体
GetTypeName(); //关闭子窗体后执行ComboBox更新
wangliang8229780 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhushoudong 的回复:]
直接 在父窗体里定个函数算了 子窗体hide()之后就执行嘛 那样就达到刷新的效果了
[/Quote]

有没有具体代码呢?
zhushoudong 2009-05-14
  • 打赏
  • 举报
回复
直接 在父窗体里定个函数算了 子窗体hide()之后就执行嘛 那样就达到刷新的效果了
wangliang8229780 2009-05-14
  • 打赏
  • 举报
回复
能否详细说明一下..

试了半天,没试出个结果...
wangliang8229780 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 terrydio 的回复:]
其实很简单啊。
比如在主窗体中有一段这样的代码

public void LoadAddTypeName()
{
if(DialogReult.OK==AddTypeName.ShowDialog()) //调出要添加分类的窗体
{
GetTypeName(); //点击新弹出窗体的确定后,主窗体重新绑定。
}
}

public void GetTypeName()
{
this.cboType.DataSource = clientBLL.GetTypeName().Tables[0].DefaultView;
this.cboType.DisplayMember = "TypeName";

[/Quote]

没明白你的意思..
wxg22526451 2009-05-14
  • 打赏
  • 举报
回复
实例化主窗体?
应该是主窗体中调用子窗口交互的,如楼上所说。
terrydio 2009-05-14
  • 打赏
  • 举报
回复
其实很简单啊。
比如在主窗体中有一段这样的代码

public void LoadAddTypeName()
{
if(DialogReult.OK==AddTypeName.ShowDialog()) //调出要添加分类的窗体
{
GetTypeName(); //点击新弹出窗体的确定后,主窗体重新绑定。
}
}

public void GetTypeName()
{
this.cboType.DataSource = clientBLL.GetTypeName().Tables[0].DefaultView;
this.cboType.DisplayMember = "TypeName";
this.cboType.ValueMember = "Id";
}
wangliang8229780 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxg22526451 的回复:]
添加后插进数据库了吧?
窗体交互完后 主窗体重新绑定下combobox。

C# code子窗体.Hide();
GetTypeName();
[/Quote]

子窗体中调用不了GetTypeName()的方法啊?

实例化主窗体之后再调用,压根就运行不了,编译也没有错误~~
wxg22526451 2009-05-14
  • 打赏
  • 举报
回复
添加后插进数据库了吧?
窗体交互完后 主窗体重新绑定下combobox。
子窗体.Hide();
GetTypeName();
资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在C# WinForm开发,子窗体有时需要操作或更新窗体的状态,例如刷新窗体内容或修改窗体控件的值。以下是两种实现方式的详细说明。 方法一:使用委托 通过定义一个自定义委托SetVisiableHandler,将窗体的方法传递到子窗体,子窗体可以在需要时调用该方法来改变窗体控件状态。具体步骤如下: 在窗体Form2定义委托类型SetVisiableHandler以及相关处理方法。 当打开子窗体Form3时,将SetVisiable方法作为参数传递给子窗体。 子窗体Form3接收并存储该委托,在按钮点击事件btnVisible_Click调用它。 以下是代码示例: 方法二:使用公共变量 通过在窗体和子窗体之间共享公共变量来实现通信。具体步骤如下: 在窗体Form4定义一个公共属性StrLabel1,用于存储需要传递的值。 子窗体Form5通过访问这个公共变量来获取或设置窗体的值。 子窗体在操作完成后,通过修改公共变量来更新窗体的状态。 以下是代码示例: 这两种方法都可以实现子窗体窗体的控制,但需要注意窗体之间的关系,例如通过Owner属性或手动传递引用。频繁的跨窗体交互可能会增加复杂性,因此在设计时应考虑清晰的结构和通信方式,避免不必要的耦合。总的来说,在C# WinForm开发,子窗体窗体的交互可以通过委托、公共变量等多种方式实现。选择哪种方法取决于具体需求和项目结构,实际应用应注重代码的可读性和维护性。

111,110

社区成员

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

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

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