C#Mdi窗体子窗体调用父窗体函数的问题

liruilirui163 2009-02-20 09:58:04
我在父窗体中做了打开子窗体的函数,现在想实现这样一种功能:通过Mdi子窗体的一个按钮的点击,调用父窗体的函数,显示另外一个Mdi子窗体。谢谢
...全文
417 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
highfly2008 2009-02-22
  • 打赏
  • 举报
回复
//先在主窗体中打开MDI_One
Form2 MDI_One = new Form2();
MDI_One.MdiParent = this;
MDI_One.Show();

//再在MDI_One中打开MDI_Two
Form3 MDI_Two = new Form3();
MDI_Two.MdiParent = this.MdiParent;
MDI_Two.Show();
scy251147 2009-02-22
  • 打赏
  • 举报
回复
委托
assky124 2009-02-22
  • 打赏
  • 举报
回复
还有两种方法:

1、反射

this.Owner.GetType().GetMethod("公有方法函数名");
/*如果调用的函数有参数需要换其他的GetMethod重载函数
具体函数说明查看SDK*/

2、Controller
定义一个静态的Controller的类

public static class Controller
{
public static void CreatMdiForm()
{
//
}
}
kugou123 2009-02-22
  • 打赏
  • 举报
回复
Evnet + Delegate
hlp912 2009-02-22
  • 打赏
  • 举报
回复
学习中....
fengyupeng 2009-02-22
  • 打赏
  • 举报
回复
委托委托委托委托 楼上说的很清楚了
fengyupeng 2009-02-22
  • 打赏
  • 举报
回复
委托委托委托委托 楼上说的很清楚了
birdlonger 2009-02-22
  • 打赏
  • 举报
回复
用委托吧.
比如Form1 主,Form2 ,Form3 子的话,(想在Form2中调用Form1的private函数创建Form3)
你可以 在Form2 中定义对应的委托(委托类型与Form1的private函数相符合).
在Form1中创建Form2的时候顺便把Form2中的委托赋值为Form1中对应的private函数;
然后在Form2中想创建Form3的时候.调用委托就可以了.
不知道能给说明白了不!
liruilirui163 2009-02-22
  • 打赏
  • 举报
回复
委托,我没有试,直接调用肯定是不行的,首先,如果直接调用就要声明新的窗体,这个窗体对象就不是原来的了,再者,窗体函数中的许多变量都是私有的,恐怕是调用不了的。
饺子87 2009-02-21
  • 打赏
  • 举报
回复
用委托或者直接用((MainForm)Owner).XXX来调用父窗体方法
liruilirui163 2009-02-21
  • 打赏
  • 举报
回复
其实这个问题,我已经找到解法了,比如要在ChildForm1里面点击按钮,显示ChildForm2,可以直接在前者里面声明ChildForm2的新对象,但我不想这么做,因为我在Mdi父窗体中,写了一些控制子窗体显示的函数,如果在子窗体里面单独再写控制函数,会破坏程序整体的可修改性。现在的问题其实就变成了,怎么在子窗体中调用父窗体设为私有的函数,有正解加分。谢谢

110,533

社区成员

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

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

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