C#如何跨窗体调用控件

有两个窗体,FORM1和FORM2。启动时,FORM1的load事件中用,form2.show使用FORM2显示出来。点击FORM2中的button后,Form1中的la... 有两个窗体,FORM1和FORM2。启动时,FORM1的load事件中用,form2.show使用FORM2显示出来。点击FORM2中的button后,Form1中的label1的text改变。
要怎么实现,好像要用委托。忘掉了
四楼的不行,不知你试过没有。这种跨窗体调用控件不像调用方法那样简单。这种直接调用是不安全的,要用委托,和被调用控件的invoke方法。以前用过(问别人的),现在忘掉了。 大哥,大姐们啊,自己先试试行不行。五楼的也不行,早就试过了。
展开
 我来答
qiyuwanjia
2008-12-26 · TA获得超过253个赞
知道小有建树答主
回答量:422
采纳率:0%
帮助的人:281万
展开全部
用事件回调,看一点我的代码
在Form1里面写一个方法,用来修改label
在Form2里面写:
public delegate void SetMainFormTopMostHandle(bool topmost);
public event SetMainFormTopMostHandle SetMainFormTopMost;
声明一个委托和事件
然后在f2.Show()打开f2之前,加一句:
Form2 f2 = new Form2 ();

f2.SetMainFormTopMost += new Form2.SetMainFormTopMostHandle(MainForm_SetMainFormTopMost);
f2.Show();
这里面MainForm_SetMainFormTopMost就是你用来修改label的方法(回调函数)
SetMainFormTopMostHandle、SetMainFormTopMost你自己写名字
大致就是为f2创建一个用来修改label的事件,然后把修改label的方法绑定到这个事件上,启动f2,在f2中执行这个事件,就是SetMainFormTopMost(true)这样写 (参数要和委托的那个声明一致)
那么就会调用F1中绑定的那个方法

f2.SetMainFormTopMost += new Form2.SetMainFormTopMostHandle(MainForm_SetMainFormTopMost);
这句最关键,你输入到+=之后,按两下Tab,他会自动给你生成回调函数
xupeiying
2008-12-26 · TA获得超过468个赞
知道小有建树答主
回答量:553
采纳率:0%
帮助的人:568万
展开全部
空间也可以公开,在属性面板里有modified属性。 但是一般都不这么做。
你可以在form1里写一个public方法,在里面操作label的text,然后form2的button时间里调用。 这个不用委托,委托一般在需要把一个函数当成另一个函数的参数时才用。
form1中
public void setLabel1Text(string textStr)
{
label1.text=textStr;
}

form2的button_Click中

private void butoon_Click(object sender,EventArgs e)
{
form1 f1=new form1();
f1.setLabel1Text("lable1的text值");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sq_zhuyi
2008-12-26 · TA获得超过680个赞
知道小有建树答主
回答量:1127
采纳率:0%
帮助的人:1007万
展开全部
首先Form1.label1的访问权限设成public
然后Form2中:Form1.label1.Text = "test";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lsdfz39
2008-12-26 · 超过20用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:76万
展开全部
这个问题很经典 , 在c#中 窗体show可以带参数show的,意思在from2 加载的时候可以带参数的,可以将form1 中的空间作为参数,传递给form2 就可以在form2中 随便修改form1的值了。不明白可以在线问我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jinlio
2008-12-26 · TA获得超过1459个赞
知道大有可为答主
回答量:1719
采纳率:0%
帮助的人:1521万
展开全部
不懂啥是委托。

一般调用其他窗体的东东(也不知道咋说)我都是这么干的。

比如在frm1下调用frm2的东东。就是
frm2.**** 星号就是调用东西的名称了。(额,frm1,frm2在同一个目录下哈)

一般不是全局变量都这么传的么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式