【求教】如何在一个窗体中调用主窗体中的函数

hustu200715998 2012-07-10 07:55:48
我主窗体没有实例名 在MAIN函数中这样运行的
Application.Run(new Form1 (frm.getLoginUser()));

然后我在主窗体中点击一个button弹出另一个窗体,想调用主窗体中的一个button的click事件,但是主窗体虽然new了但是不知道实例名,请问有办法可以调用么?
...全文
210 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hustu200715998 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
应该可以用委托吧,你的意思我不怎么懂,委托可以发送你想发送的对象
[/Quote]
应该可以把 新手对委托没理解透彻
hustu200715998 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 10 楼 的回复:

引用 3 楼 的回复:

我不是要显示form2,是form已经showdialog了,然后再form2中怎么调用form1?
引用 1 楼 的回复:

比如另一个窗体是:Form2

C# code

Form2 f=new Form2();
f.Show();

在Form1中new Form2:Form2 f2=new Form(thi……
[/Quote]

嗯 除了把form1中的private改为public之外 还可以添加属性 这样更好一些 没用改变原来的封装
hustu200715998 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
如果你以后再写一个程序,然后发现原来写的程序的一个对话框看起来差不多,可以拿来重用。

于是你把这个对话框的代码拷贝过来了。但是很郁闷地发现,根本不能用,为什么呢?因为这个对话框还需要“调用主窗口的一个函数”,于是你就把“主窗口”拷贝来了,发现主窗口还使用另一个子窗口……

算了,我还是重写吧。

每天都在重复劳动,而不知道多学习一点,这真的是很大的悲哀。你看到这里天天有人说自己为什么……
[/Quote]
膜拜大牛。
我是个初学者,不知道自己有没有理解你的意思,我想的也是怎么样能够复用更多的代码。因为接的是师兄的程序,自己经验也不足,所以虽然感觉之前封装的不好,但是自己也没有头绪。
把调用关系做成单向的:是不是可以再子窗口的构造函数的参数中加入主窗体
yezhendong185 2012-07-10
  • 打赏
  • 举报
回复
做个事件去调用主窗体的BUTTON事件就可以了
独孤侠客 2012-07-10
  • 打赏
  • 举报
回复
应该可以用委托吧,你的意思我不怎么懂,委托可以发送你想发送的对象
laohuhenshuai 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 3 楼 的回复:

我不是要显示form2,是form已经showdialog了,然后再form2中怎么调用form1?
引用 1 楼 的回复:

比如另一个窗体是:Form2

C# code

Form2 f=new Form2();
f.Show();

在Form1中new Form2:Form2 f2=new Form(this);

在Form2……
[/Quote]
可以的 刚刚测试了下下 就是要把Form1中的事件做成Public的
laohuhenshuai 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

我不是要显示form2,是form已经showdialog了,然后再form2中怎么调用form1?
引用 1 楼 的回复:

比如另一个窗体是:Form2

C# code

Form2 f=new Form2();
f.Show();
[/Quote]
在Form1中new Form2:Form2 f2=new Form(this);

在Form2中做一个构造函数public Form2(Form1)

private Form1 f1;
public Form2(Form1 f)
{
f1=f;
}

然后这个f1能不能调用Form1中的事件~我也不知道 你可以试下。。。
cheng2005 2012-07-10
  • 打赏
  • 举报
回复
有些人一辈子都搞不清楚自己到底在做什么.真是悲哀.
threenewbee 2012-07-10
  • 打赏
  • 举报
回复
当然了,应付眼前的差事似乎比学习、思考什么的更重要。用制造问题的办法解决问题,再去解决因为解决问题而制造的问题,这听上去很滑稽的事情就是你觉得最当务之急的。那么你不但在重复劳动,还在无效劳动,甚至是破坏劳动。
threenewbee 2012-07-10
  • 打赏
  • 举报
回复
如果你以后再写一个程序,然后发现原来写的程序的一个对话框看起来差不多,可以拿来重用。

于是你把这个对话框的代码拷贝过来了。但是很郁闷地发现,根本不能用,为什么呢?因为这个对话框还需要“调用主窗口的一个函数”,于是你就把“主窗口”拷贝来了,发现主窗口还使用另一个子窗口……

算了,我还是重写吧。

每天都在重复劳动,而不知道多学习一点,这真的是很大的悲哀。你看到这里天天有人说自己为什么写了几年程序都没有长进。

给你一个思考题,能不能把主窗体和子窗体双向的调用关系变成单向?
hustu200715998 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

你可以将将主窗体点击事件触发的代码抽象成一个公共类的方法,通过传递参数来公共调用
[/Quote]
看来只能这样了 不行我就把子窗体的控件搬到主窗体上,不过要改很多visible
  • 打赏
  • 举报
回复
你可以将将主窗体点击事件触发的代码抽象成一个公共类的方法,通过传递参数来公共调用
hustu200715998 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你要知道Main是整个程序的入口点,而实际的操作应该是在主窗体中

而且在主窗体可以得到依附在其上的所有控件及相应的事件,应该好好的理下流程
[/Quote]

main是程序入口点我知道,但实际的操作也可以在主窗体弹出来的另一个窗体中吧?
hustu200715998 2012-07-10
  • 打赏
  • 举报
回复
我不是要显示form2,是form已经showdialog了,然后再form2中怎么调用form1?
[Quote=引用 1 楼 的回复:]

比如另一个窗体是:Form2

C# code

Form2 f=new Form2();
f.Show();
[/Quote]
  • 打赏
  • 举报
回复
你要知道Main是整个程序的入口点,而实际的操作应该是在主窗体中

而且在主窗体可以得到依附在其上的所有控件及相应的事件,应该好好的理下流程
laohuhenshuai 2012-07-10
  • 打赏
  • 举报
回复
比如另一个窗体是:Form2


Form2 f=new Form2();
f.Show();

110,534

社区成员

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

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

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