本帖最后由 xupeihuagudulei 于 2009-09-30 08:54:17 编辑

解决方案 »

  1.   

    顺便打个广告
    C#高级编程第六版
    谁要的去下载。
    http://topic.csdn.net/u/20090929/11/01d65188-c96c-4a6d-ba2f-5aa26ce04a3d.html
      

  2.   


      private void frmFtpFileTree_Load(object sender, EventArgs e)
            {
       myThread = new Thread(new ThreadStart(Test));
               myThread.Start();      
            }
           
    delegate void SetVisibleDelegate(); //委托
     private void Test()
            {
                this.Invoke(new SetVisibleDelegate(GetTreeNode));
                try
                {
                    if (myThread != null)
                    {
                        myThread.Abort();
                    }
                }
                catch
                {
                    myThread = null;
                }
                
            }       
            public void GetTreeNode()
            {
              //do some thing
               }
      

  3.   

    其实我也不知道到底有没有搞得委托,反正就是这种迷糊迷糊的感觉

    谁能帮我解释一下
    比如dropdownlist 的selectindexChanged类似这种的事件从这事件继承至哪里。做些什么事情
    就像我知道这些方法,委托,。
    但是不知道怎样连起来。,
    public class EVentArgspublic delegate void EventHandler(object sender,EventArgs e)public event EventHandler SelectIndexChanged
      

  4.   


    你肯定晓得委托就相当于函数指针三。比如控件的事件就是一种委托,它可以实现“晚绑定”,比如Button的事件,在写这个控件时,Click事件并不知道要执行什么过错,而是在用户使用后,再确定执行什么东西。
      

  5.   

    this.Invoke(new SetVisibleDelegate(GetTreeNode));//把要做的事情GetTreeNode() 放在委托里
      

  6.   


    public class EventArgs 
    其实就是参数。可以是任何东西。例如 int public delegate void EventHandler(object sender,EventArgs e) 
    委托的定义。该委托关联的函数 参数为sender和epublic event EventHandler SelectIndexChanged 
    事件的定义
      

  7.   

    学习了张子阳的,那是初步掌握进一步可以学习老赵的,那是深入理解同时可以看看 CLR 第二版 2.0 C#  学习原理
      

  8.   

    我想说句,我还是不明白
    真的是越看越晕namespace Delegate {
         //定义委托,它定义了可以代表的方法的类型
         public delegate void GreetingDelegate(string name);
            class Program {           private static void EnglishGreeting(string name) {
                   Console.WriteLine("Morning, " + name);
               }           private static void ChineseGreeting(string name) {
                   Console.WriteLine("早上好, " + name);
               }           //注意此方法,它接受一个GreetingDelegate类型的方法作为参数
               private static void GreetPeople(string name, GreetingDelegate MakeGreeting) {
                   MakeGreeting(name);
                }           static void Main(string[] args) {
                   GreetPeople("Jimmy Zhang", EnglishGreeting);
                   GreetPeople("张子阳", ChineseGreeting);
                   Console.ReadKey();
               }
            }
        }GreetPeople方法传了一个name和一个委托过去。
    在方法里面是委托做的件事情
    makeGreeting(name);在main里调用GreetPeople("张子阳",ChineseGreeting)它怎么就知道去调用ChineseGreeting呢
    越想越糊
      

  9.   

    有见委托,哈哈个人的理解:所谓万物皆对象,方法也要对象化,那就是委托了,委托就是类,方法类;我们实例化委托为某个方法正如我们用new 某个类,实例化为对象;事件应该算是访问器,语法上大概如此吧。至于具体应用于什么场景,大体是订阅发布吧,比如提供者提供一个变量,关心着向其注册(就是挂到其事件上)当提供者发布这个变量时传播到各个注册到其上的方法肤浅之见还请高人指教
      

  10.   


    GreetPeople("张子阳",ChineseGreeting)
    你把GreetingDelegate 当成一个类,ChineseGreeting当成GreetingDelegate 实例化后的对象还难理解吗?实际也是这样的
      

  11.   

    其实单纯“死抠”这里的概念,技术并不重要。胡乱拼凑、没有软件工程的项目,最后往往也能给用户交差。这类东西需要多从软件工程的角度去考虑,而单纯去背delegate、event的概念还不如先放下。有很多相关的软件工程的专题,小到“依赖倒置原则”,大到“按照职责划分对象(类)来设计软件”,以及XP中的“只做简单的设计”等等,你要做好软件,就不能花几个星期甚至几个月去死抠一个过度复杂的对象(类)的设计,不能把各种无关的职责都塞进过度复杂的类型,而应该用1、2天时间设计一个核心的服务,然后也是1、2天逐步地一个一个设计其它利用了这个服务的客户,即将职责分解到足够简单的对象。OOAD、UML之类的,不管直接的还是辅助的知识,都是围绕这些软件工程中的面向对象设计技术,才会学到这些。软件设计其实并不是编程,设计模型不但可以给机器使用,往往也可以给人使用,所以设计软件的时候应该首先忘记那些编程伎俩,轻视编程而重视设计。
      

  12.   

    很多事情都是"1+1=2",没有为什么,只是定义,你是时间问题...
    按照MS规定的方法去写代码,很多东西就有了所以然...这叫哲学解决问题,开个玩笑....大家勿ma!!!
      

  13.   

    楼主咋被教育的没声儿了?哈哈
    贴段代码可以和你上面的比较下
    //定义接口,它定义了方法的类型
            public interface IGreeting
            {
                void Greeting(string name);
            }
            public class EnglishGreeting : IGreeting
            {
                public void Greeting(string name)
                {
                    Console.WriteLine("Morning, " + name);
                }
            }
            public class ChineseGreeting : IGreeting
            {
                public void Greeting(string name)
                {
                    Console.WriteLine("早上好, " + name);
                }
            }        //注意此方法,它接受一个IGreeting类型的对象作为参数
            private static void GreetPeople(string name, IGreeting MakeGreeting)
            {
                MakeGreeting.Greeting(name);
            }
            static void Main(string[] args)
            {
                EnglishGreeting englishGreeting = new EnglishGreeting();
                ChineseGreeting chineseGreeting = new ChineseGreeting();
                GreetPeople("Jimmy Zhang", englishGreeting);
                GreetPeople("张子阳", chineseGreeting);
                Console.ReadKey();
            }
      

  14.   

    我记得刚学.NET的时候对“面向对象”这个词很疑惑,问了个同学,那同学估计也不咋的,也没给我一个很清晰的答案,后来写的多了,慢慢的也就体会出来了。
    后来看委托也是卡卡的,看是看懂了,但是死活不明白为什么要这样写。后来硬着头皮照葫芦画瓢,画多了也就明白了。
    看100遍不如自己写一遍。
      

  15.   

    各位顺便帮我看下这个问题。
    http://topic.csdn.net/u/20090930/11/b317a7bb-6ed0-4bb8-b5a9-6fc0606098db.html
      

  16.   


    你平常可以尝试把你的设计思路讲给完全不懂编程没接触过编程的门外汉听,由此下来你对设计的驾驭和把握将更上几个台阶。
    不要太介意sp1234语义制导上面的缺陷,客观的说sp1234说的话丢给一般的编译器会报语法错,但丝毫不影响自然人对其言语精髓的理解。
      

  17.   

    放松. 我当时delegate/event的时候也是费了老大劲.