zoukankan      html  css  js  c++  java
  • WPF 自定义事件

    1.可传参数

    namespace DrugInfo
    {
        public class ChooseDrugRoutedEventArgs : RoutedEventArgs
        {
            public ChooseDrugRoutedEventArgs(RoutedEvent routedEvent, object source) : base(routedEvent, source) { }
    
            public string Message { get; set; }
        }
        
        public partial class ChooseDrug
        {
            //声明和注册路由事件
            public static readonly RoutedEvent ChooseDrugRoutedEvent = EventManager.RegisterRoutedEvent("ChooseDrug", RoutingStrategy.Bubble, typeof(ChooseDrugRoutedEventArgs), typeof(ChooseDrug));
    
            //自定义事件委托 
            public delegate void ChooseDrugRoutedEventHandler(object sender, ChooseDrugRoutedEventArgs e);
    
            //CLR事件包装
            public event ChooseDrugRoutedEventHandler ChooseDrugClick
            {
                add { AddHandler(ChooseDrugRoutedEvent, value); }
                remove { RemoveHandler(ChooseDrugRoutedEvent, value); }
            }
            //界面选择数据后确定
            private void Choose_OnClick(object sender, RoutedEventArgs routedEventArgs)
            {           
                
                ChooseDrugRoutedEventArgs args = new ChooseDrugRoutedEventArgs(ChooseDrugRoutedEvent, this);
                args.Message = "传数据过去";
                this.RaiseEvent(args);//UIElement及其派生类 
            }
        }
    }
    
    //调用
    namespace Purchasing
    {
        /// <summary>
        /// Main.xaml 的交互逻辑
        /// </summary>
        public partial class Main
        {    
            private void Control_Loaded(object sender, RoutedEventArgs e)
            {
                var popups = new ChooseDrug();
                popups.ChooseDrugClick += Popups_ChooseDrugClick;
            }
            
            private void Popups_ChooseDrugClick(object sender, ChooseDrugRoutedEventArgs e)
            {
                RadWindow.Alert(e.Message);
            }
        }
    }

    2.无参数,不需要自定义委托

    1.可传参数
    
    namespace DrugInfo
    {
        public partial class ChooseDrug
        {
            //声明和注册路由事件
            public static readonly RoutedEvent ChooseDrugRoutedEvent = EventManager.RegisterRoutedEvent("ChooseDrug", RoutingStrategy.Bubble, typeof(EventHandler<RoutedEventHandler>), typeof(ChooseDrug));
    
            //CLR事件包装
            public event RoutedEventHandler ChooseDrugClick
            {
                add { AddHandler(ChooseDrugRoutedEvent, value); }
                remove { RemoveHandler(ChooseDrugRoutedEvent, value); }
            }
            //界面选择数据后确定
            private void Choose_OnClick(object sender, RoutedEventArgs routedEventArgs)
            {           
                RaiseEvent(new RoutedEventArgs(ChooseDrugRoutedEvent));
            }
        }
    }
    
    //调用
    namespace Purchasing
    {
        /// <summary>
        /// Main.xaml 的交互逻辑
        /// </summary>
        public partial class Main
        {    
            private void Control_Loaded(object sender, RoutedEventArgs e)
            {
                var popups = new ChooseDrug();
                popups.ChooseDrugClick += Popups_ChooseDrugClick;
            }
            
            private void Popups_ChooseDrugClick(object sender, RoutedEventArgs e)
            {
                RadWindow.Alert("OK");
            }
        }
    }
  • 相关阅读:
    Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
    一种Unity2D多分辨率屏幕适配方案
    Unity 2D骨骼动画2:创建真实动画
    Unity2d 骨骼动画1:介绍
    Unity2d 骨骼动画3:介绍Mecanim和脚本
    Unity2D研究院之自动生成动画、AnimationController、Prefab(一)
    mongochef如何链接有权限的mongodb3.x数据库
    moogodb3.x总结
    mongodb3.x用户角色
    MongoDB 基础 -安全性-(权限操作)
  • 原文地址:https://www.cnblogs.com/vipsoft/p/7020966.html
Copyright © 2011-2022 走看看