C#委托和事件开发中的实例-类操纵窗体动态显示内容

C#委托和事件-类操纵窗体内容

刚学C#不久,学委托和事件的时候概念很模糊,不知道啥时候用,最近开发C#发现,其他类想控制窗体显示内容,普通的方法无效,得用委托和事件,虽然不知道啥原因,在这里记录一下吧!建议点赞收藏起来哦!

情景:我想在框选内容的时候在窗体显示框选的信息,判断框选功能不在窗体类中

1、在框选判断的类中创建委托和事件

public static event Action<string> OnOutputMsg;//静态委托事件
        public void btnEvent(string info)
        {
            if (OnOutputMsg != null)
            {
                OnOutputMsg(info);
            }
        }

2、在判断框选的时候调用事件

if (IsSelected)
            {
                ....
                btnEvent(Data.Info);
            }

3、需要动态显示内容的窗体-调用委托(委托的多播)

CubeElement.OnOutputMsg += new Action<string>(DisMessage);

4、窗体中显示内容的方法

public void DisMessage(string Info)
        {
            cubeInfoLabel1.Text = Info;
        }

声明委托
delegate < return type> < delegate-name> < parameter list>
如:public delegate int MyDelegate (string s);
上面的委托可被用于引用任何一个带有一个单一的 string 参数的方法,并返回一个 int 类型变量。
实例化委托
一旦声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。当创建委托时,传递到 new 语句的参数就像方法调用一样书写,但是不带有参数。例如:
public delegate void printString(string s);

printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);
委托的简单写法:Action,Func
Action至少0个参数,最多16个参数 ,但是返回值必须是Void
如:public delegate void Action(T obj);
Func只有带泛型的一种形式,Action有带泛型和不带的两种
Func 委托必须要带有一个返回值
可以有0个或多达16个参数类型
最后一个泛型参数代表返回类型,前面的都是参数类型
参数类型必须跟指向的方法的参数类型按照顺序对应
如:public delegate TResult Func< outTResult>();

如:Func pFunc = new Func(() =>
{
return “薪薪代码很酷”;
});
Console.WriteLine(pFunc.Invoke());
Func<string, string> pFuncParsInfo = new Func<string, string>((name)=>
{
return $“{name}很酷”;
});
Console.WriteLine(pFuncParsInfo.Invoke(“薪薪代码”));
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薪薪代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值