• 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");
            }
        }
    }
  • 相关阅读:
    js函数——倒计时模块+无缝滚动
    一步步编写avalon组件02:分页组件
    mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理
    只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果
    某考试 T1 arg
    vijos 2035 奇数偶数与绚丽多彩的数
    bzoj 5093: [Lydsy1711月赛]图的价值
    [HEOI2016/TJOI2016]求和
    [TJOI2015]概率论
    Codeforces 616 E Sum of Remainders
  • 原文地址:https://www.cnblogs.com/vipsoft/p/7020966.html
Copyright © 2020-2023  润新知