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");
            }
        }
    }
  • 相关阅读:
    Vue.js
    Vue.js
    Vue.js
    Vue.js
    webpack(1)
    webpack(2)
    babel-loader7和babel8版本的问题
    [JZOJ4274] 终章-剑之魂
    [JZOJ427] 圣章-精灵使的魔法语
    BZOJ题表(红色表示已完成)
  • 原文地址:https://www.cnblogs.com/vipsoft/p/7020966.html
Copyright © 2011-2022 走看看