【注释】:
1.【声明委托】:想调用哪里的委托就在哪里声明(第一步)
2.【委托的调用】在哪里使用,就在哪里定义委托(第三步)
3. 委托变量 和 具体方法的关联,通常是分开的(第四步)
(这里是Form2调用Form1的函数)访问链接:C#跨窗体调用控件(委托回调函数使用例子)
问题: 有两个窗体,FORM1(含一个label控件,一个名为显示form2的button控件)和FORM2(含一个button控件)。启动时,FORM1中点击button控件显示form2使FORM2显示出来。点击FORM2中的button1后,Form1中的label1的text改变。 解决:用事件回调 一、在Form2
解决:用事件回调
一、在Form2里面:
首先声明一个委托和委托实例
public delegate void SetMainFormTopMostHandle(bool topmost);
public event SetMainFormTopMostHandle SetMainFormTopMost;
二、在Form1里面:
button控件“显示form2“的click事件中有下面的代码:
{
Form2 f2 = new Form2 ();
f2.Show()
}
然后在f2.Show()之前,加一句:
f2.SetMainFormTopMost += new SetMainFormTopMostHandl(f2_SetMainFormTopMost); 用来给form1中的SetMainFormTopMost注册一个修改label控件内容的方法f2_SetMainFormTopMost()
提示:
f2.SetMainFormTopMost += new SetMainFormTopMostHandle(f2_SetMainFormTopMost);
这句最关键,你输入到+=之后,按两下Tab,他会自动给你生成回调函数
如下:
void f2_SetMainFormTopMost(bool topmost)
{
label1.Text = "调用成功";//改变label内容的代码
}
这里面f2_SetMainFormTopMost就是你用来修改label的方法(回调函数)。 SetMainFormTopMostHandle、SetMainFormTopMost分别是定义的委托和委托实例名称,自己可以随便定义。
大致就是为f2创建一个用来修改label的方法,然后把该方法绑定到这个委托实例上。
三、启动f2,在f2中执行这个委托实例,就是SetMainFormTopMost(true)这样写 (参数要和委托的那个声明一 致)
那么就会调用F1中绑定的那个方法。
源代码如下:
Form1中的代码:文章来源:https://www.toymoban.com/news/detail-511253.html
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 跨窗体调用控件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
//【步骤3】:根据委托的定义写被调用的函数
void f2_SetMainFormTopMost(bool topmost) //回调函数
{
label1.Text = "调用成功";
}
private void button1_Click(object sender, EventArgs e)
{
//【步骤4】:委托的关联
Form2 f2 = new Form2();
f2.SetMainFormTopMost += new SetMainFormTopMostHandle(f2_SetMainFormTopMost);//给form2中的委托实例SetMainFormTopMost 注册方法
f2.Show();
}
}
}
Form2中的代码:文章来源地址https://www.toymoban.com/news/detail-511253.html
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 跨窗体调用控件
{
public delegate void SetMainFormTopMostHandle(bool topmost); //【步骤1】定义委托
public partial class Form2 : Form
{
public SetMainFormTopMostHandle SetMainFormTopMost;//【步骤2】定义委托实例
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//【第5步】:委托的调用
SetMainFormTopMost(true);//执行委托实例
}
}
}
到了这里,关于C#,ASP.NET委托的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!