• C#的委托与Java的自定义接口的异曲同工的同步操作


    C#的委托(以WinForm为例)

    在子窗体(ChildFrm)中定义一个委托

                this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
     /// <summary>
        /// 子窗体:在子窗体中定义一个委托,供调用都设置侦听,并可与此窗体的某个事件同时执行自身指定的事件
        /// 定义 委托
        /// </summary>
        public partial class ChildFrm : Form
        {
            public ChildFrm()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 定义委托(同Java中的接口)
            /// </summary>
            /// <param name="callback">可以是任意类型</param>
            public delegate void CaptureListenEvent(string callback);
    
            /// <summary>
            /// 声明委托
            ///from:博客园-曹永思http://www.cnblogs.com/yonsy/p/3631116.html
            /// </summary>
            public CaptureListenEvent CaptureListener = null;
    
            /// <summary>
            /// 调用者设置侦听
            /// </summary>
            /// <param name="CaptureListener"></param>
            public void SetCaptureListener(CaptureListenEvent CaptureListener)
            {
                this.CaptureListener = CaptureListener;
            }
    
            /// <summary>
            /// 被侦听的窗体执行一个事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                WiteContent();//
            }
            /// <summary>
            /// 写入值
            /// </summary>
            public void WiteContent()
            {
                string callback = richTextBox1.Text;
    
                //触发被侦听的委托
                this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
                //this.CaptureListener.Invoke(callback);//子窗体触发委托事件,以告诉调用的窗体            
            }
    
        }
    View Code

    Code By 博客园-曹永思

    在主窗体(MainFrm)设置对子窗体委托的侦听

                //设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
                frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
        /// <summary>
        /// 主窗体
        /// 调用个关联子窗体
        /// 设置子窗体中的侦听
        /// </summary>
        public partial class MainFrm : Form
        {
            //子窗体
            ChildFrm frm = new ChildFrm();
    
            public MainFrm()
            {
                InitializeComponent();
    
                //设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
                frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //打开子窗体
                frm.Show();
            }
    
            /// <summary>
            /// 子窗体触发委托事件时,主窗体同时会执行的方法
            ///code by:博客园-曹永思
            /// </summary>
            /// <param name="callback"></param>
            public void CaptureInfo(string callback)
            {
                richTextBox1.Text = richTextBox1.Text + callback + "
    ";
            }
        }
    View Code

    =====================================================================

    Java的自定义接口

    定义接口的类(HuangLiMonthActivity):

    //定义接口的类:
    
    /*
         * 声明一个接口    
         */
        public static YueLiClickListener yueLiClickListener;
        
        /*
         * 设置接口侦听    
         */
        public static void setYueLiClickListener(YueLiClickListener clickListener) {
            yueLiClickListener = clickListener;
        }
    
    
            //在某个方法中绑定侦听
        //绑定触发的事件-调用都实现这个方法以处理自身的逻辑
        yueLiClickListener.OnClick(iyear, imonth, iday);
    View Code

    调用接口的类(HuangLiMonthPanelActivity):

    //实现接口绑定的侦听事件
            YueLiClickListener clickListener = new YueLiClickListener() {
    
                @Override
                public void OnClick(int year, int month, int day) {
                    // TODO Auto-generated method stub
                    getRiLiData(year, month, day);
                    mYear = year;
                    mMonth = month;
                    mDay = day;
                }
            };
    
            //设置接口侦听
            HuangLiMonthActivity.setYueLiClickListener(clickListener);
    View Code

      

  • 相关阅读:
    DB2 v8.2,v9.1,v9.5,v9.7下载地址及详细安装图解
    Windows Server 2008 R2遗忘管理员密码后的解决方案
    weblogic的域模式(生产模式、开发模式)
    Linux shell编程 字符串拼接
    Linux rsync命令详解
    oracle 日志组管理
    T-SQL编程规范
    数据库编程起别名的3中方式
    windows server下安装SSHD服务
    网线中的5类线、超5类线、6类线有什么区别?
  • 原文地址:https://www.cnblogs.com/yonsy/p/3631207.html
Copyright © 2020-2023  润新知