C#如何跨窗体调用控件
答案:6 悬赏:10
解决时间 2021-01-20 00:14
- 提问者网友:几叶到寒
- 2021-01-19 10:21
C#如何跨窗体调用控件
最佳答案
- 二级知识专家网友:十鸦
- 2021-01-19 11:38
用事件回调,看一点我的代码
在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,他会自动给你生成回调函数
在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,他会自动给你生成回调函数
全部回答
- 1楼网友:纵马山川剑自提
- 2021-01-19 16:46
这个问题很经典 , 在c#中 窗体show可以带参数show的,意思在from2 加载的时候可以带参数的,可以将form1 中的空间作为参数,传递给form2 就可以在form2中 随便修改form1的值了。不明白可以在线问我
- 2楼网友:神鬼未生
- 2021-01-19 15:35
首先Form1.label1的访问权限设成public
然后Form2中:Form1.label1.Text = "test";
然后Form2中:Form1.label1.Text = "test";
- 3楼网友:摆渡翁
- 2021-01-19 14:21
嗨 这个好办 你在load事件中new form2时 在构造函数里添加一个参数不就行了吗 就是form1类型的参数 这样在form2里就可以操作form1了
- 4楼网友:走死在岁月里
- 2021-01-19 14:08
空间也可以公开,在属性面板里有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值");
}
你可以在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值");
}
- 5楼网友:妄饮晩冬酒
- 2021-01-19 13:09
不懂啥是委托。
一般调用其他窗体的东东(也不知道咋说)我都是这么干的。
比如在frm1下调用frm2的东东。就是
frm2.**** 星号就是调用东西的名称了。(额,frm1,frm2在同一个目录下哈)
一般不是全局变量都这么传的么
一般调用其他窗体的东东(也不知道咋说)我都是这么干的。
比如在frm1下调用frm2的东东。就是
frm2.**** 星号就是调用东西的名称了。(额,frm1,frm2在同一个目录下哈)
一般不是全局变量都这么传的么
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯