c#中如何实现调用另外一个窗体中的事件?

比如:有两个窗体,form和form2,form1中有一个时间initial(booleanadministration);这是个对form1中的控件的enable属性进... 比如:有两个窗体,form和form2,form1中有一个时间initial(boolean administration);这是个对form1中的控件的enable属性进行控制的初始化函数,我想在form2中调用这个函数,我该怎么做? 展开
 我来答
murphybao
推荐于2016-01-10 · TA获得超过1210个赞
知道小有建树答主
回答量:1002
采纳率:66%
帮助的人:540万
展开全部
首先,form2需要知道form1的实例名称,两种办法,把form1句柄放到公共类,或者调用form2时传入(这里假设form2是由form1启动的)。
首先,无论哪种办法,form1中的函数声明为public
第一种办法:
定义一个公共静态类 public static class Common
静态类中定义一个静态变量 public static form1 myform1;
在form1 启动时,将自身对象赋值给公共静态类中的变量 Common.myform1= this;
在form2调用form1时是这样Common.myform1.initial

第二种办法,假设form2由form1启动,在form2中定义一个公共变量,public form1 myform1;
form1中启动form2过程:
form2 = new from2();
form2.myform1 = this
form2.show();

此时,form2中可以用myform1.initial调用
追问

试了试  没弄出来

追答
在fomr2增加一个公共变量,最上头,用来记录form1实例
public partial class form2: Form
{
public from1 theform1 //from2中加上这句,貌似你第二个窗口才叫form1,你第一个窗口叫什么,在这声明下?
//其他

public from1 ()
{
InitializeComponent();
}

form1 中调用from2时:
From1 parent = new from1();
parent.thefrom1=this;
...
阳光的雷咩咩
2013-12-26 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7802万
展开全部
把函数声明为public static,form2里面,用Form1.函数名的方式调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lnlllnnhf
推荐于2018-05-09 · TA获得超过249个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:195万
展开全部
把方法传过去
form2 添加委托
delegate void MyDel(bool b)
添加一个button 改button_click事件
if(MyDel!=null) MyDel(true);

form1 需要把这个方法传递过去
需要form2在添加一个方法
void SetHandler(MyDel del)

当然还有更好的办法,委托也可行,但最好用事件
追问
没看懂!c#刚接触不久,好多都不懂,还请您在详细点,谢谢了
追答
恩,那就用最笨的方法  form2在构造函数前面添加form1 form1;
form2构造函数这样写
form2(form1 f1)
{ form1=f1;}

然后你就可以调用form1里面任何public的方法了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ctlyh
2013-12-26 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:173
采纳率:100%
帮助的人:76.2万
展开全部
把form1作为参数,传递给form2
追问
可以具体点吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式