zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    [Oracle整理]synonym及其应用
    [Oracle整理]Oracle之Procedure参数类型
    [Oracle整理]Oracle之数组
    RDL之矩陣
    [Oracle整理]数据类型大全
    [Oracle整理]Oracle之ROWTYPE和RECORD
    [Oracle整理]Oracle游标(显示游标&隐式游标&动态游标&参数游标)
    报表rdl嵌入网页(ASP.NET)
    Linux物理机忘记root密码
    python ftplib下载文件封装
  • 原文地址:https://www.cnblogs.com/yonsy/p/3631207.html
Copyright © 2011-2022 走看看