C#在解决方案中delegate跨项目调用窗体

       解决方案中根据代码功能划分项目,一般会把UI界面的Form 等等放到一个项目下,逻辑代码放到另外一个项目。如在逻辑代码项目创建UI项目里的某个弹框实例,会遇到一些线程相关的问题。这时候可以用到delegate。

      以下简要描述常见的使用方法。

假如要求功能:

1.UI项目里存在名为Example的窗体,用于报警的弹框,如没有先添加。

2.代码运行满足某条件,需要在逻辑项目线程里弹框,阻塞处理当前报警,处理的结果是true或者false。

代码要求

1.在逻辑代码类操作,例如

 1) public delegate bool DelegateUseExampleForm();//因为需要返回结果,使用bool;

  2)使用 DelegateUseExampleForm当类型使用,定义UseExampleForm,赋值null;

 public DelegateUseExampleForm  UseExampleForm = null;

2.实现关联

1)前提是在UI主窗体使用方法实现创建实例Example创建和结果输出,例如:

 private bool ShowExampleForm()
        {
            Example  UseExample= new Example();
            UseExample.ShowDialog();//阻塞
            return UseExample.DialogResult == DialogResult.Yes;  //返回结果         
        }

2)在UI主窗体Load事件函数内,实现关联

 CurrentWorkFlow.UseExampleForm= ShowExampleForm;//假设CurrentWorkFlow是逻辑代码类的单例。

   使用,假设在逻辑代码内满足条件后,弹框处理返回flase,类似如下:

 if (!CurrentWorkFlow.UseExampleForm.Invoke())
      {
       //如果返回的结果是false
       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值