zoukankan      html  css  js  c++  java
  • 也谈Delegate—word中查询窗体为例

    这个是很久以前,也就是刚学C#的时候写的一个程序,既然用到了委托(delegate)也就顺便拿来说一下,话不多说,看程序吧:

    查找窗体中声明如下:

    public delegate void SearchText(string s);

    public delegate void Replace(string s,string s1);

            SearchText st;

            Replace rp;

            public void Init(SearchText s,Replace r)

            {

                st = s;

                rp = r;

            }

            private void button1_Click(object sender, EventArgs e)

            {   //按钮:查找下一个

                if (st != null)

                    st(this.sstxt.Text);

            }

    在主窗体的查找菜单下的代码:

            private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                frmFind fd = new frmFind();

                fd.Init(search,replace);//replace方法没有粘出来

                fd.Show(this);

            }

    并且实现SearchText的功能,如下:

            private void search(string s)

            {

                int i = this.TextBox1.Text.IndexOf(s,pos);

                pos = i + 1;

                if (i >= 0)

                {

                    this.TextBox1.SelectionStart = i;

                    this.TextBox1.SelectionLength = s.Length;

                    TextBox1.Focus();

                }

            }

      看到代码之后我们很容易发现,委托就是委托(拜托),不是自己干,只是说明程序到这之后要去调用另外一个方法而已(具体实现可以F11看一下)。说白了,委托就是函数或者方法的另外一种形式,其特别之处在于这个委托传递的参数是个方法(本文中是search和replace)。

  • 相关阅读:
    软链接mongo
    添加系统路径
    安装mongodb扩展
    查看php扩展
    查看mongodb状态
    phpExcel 替代 产品, 可导出10W数据,无压力
    饭饭之辈 200 Vue2.0生命周期(组件钩子函数与路由守卫)
    vue 父组件监听子组件事件,emit携带参数,且父组件也自带参数问题
    xlswriter 使用文档,快速写入xls 支持 2007以上的版本
    vue 中组件传值问题
  • 原文地址:https://www.cnblogs.com/incredible/p/2074619.html
Copyright © 2011-2022 走看看