• 委托,事件。。。


      之前总是各种脑补,看了http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.htmlhttp://www.cnblogs.com/zhili/archive/2012/10/22/Delegate.html  这两篇博文,本以为自己懂了其中的意思,看着好像明白他们讲的东西,但是一到别人问起来却不知道怎么回答,囧了,别人写出来的东西还是别人的思想,与自己好像没有半毛钱的关系,所以,真正遇到问题的时候,用到委托,用到事件的时候才会对他们的理解更加深刻,不至于,别人问“什么时候用委托?” 自己只能傻眼以对。。。

     在我的项目中,自定义控件中定义了许多要用到的控件,比如下面这个控件BtnLists.

     

      这个自定义控件在MyControls类中

     

       控件是用来使用的,在主界面中需将上面的控件布局到主界面中,然后需要对控件进行处理,也就是单击不同的按钮要触发不同的事件。

     这个要怎样实现效果呢?首先我们知道BtnLists 被应用到主界面时已经是一个整体,如何区分且控制其中每个按钮所发生的事件呢? 我可以说,刚开始的时候,对这个问题我只能耸耸肩木?

     后面老大提了一句用委托,事件处理,哦?好像终于用到以前脑补的各种知识了,可是现在怎么就用不出来了呢?书呆子一个的我。。。

     立即看了下别人的例子,懂了,会模仿了。。。

     在BtnLists类中为控件定义一个事件。

     #region 登陆密码按钮的单击事件
    
            private void btnLogin_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                OnLoginClick(this, e);
            }
            public delegate void LoginClickHandler(object sender, RoutedEventArgs e);
            public event LoginClickHandler LoginClick;
            private void OnLoginClick(object sender, RoutedEventArgs e)//事件的注册
            {
                if (LoginClick != null)
                {
                    LoginClick(this,e);
                }
            }
            #endregion

    在主界面MainPage类中用到该BtnLists时,就会有这个事件

    点击进去,你就可以再方法里写你想要的实现效果了

    private void myBtnLists_LoginClick(object sender, RoutedEventArgs e)
            {
                Views.UserInfo.Login_Pwd lp = new Views.UserInfo.Login_Pwd();
                lp.Show();
            }

     刚开始想用到Login_Pwd 这个类时,要引用其程序集,然后就变成循环依赖了,囧,明显地处理不正确。。现在实现就不那么囧了,虽然有些还是做得很挫。。

     加深理解,灵活变通。嗯,现在是上班,在写博客,有点。。。。。。

    作者:wj704    出处:http://www.cnblogs.com/wj204/   
  • 相关阅读:
    20180818
    20200817
    [mac操作]程序运行技巧与注意事项
    [py编程]小白新奇的技巧
    [命令]使用的conda命令大全
    【编程】python文件读写
    latex学习
    [记录]菜鸡划水记录
    【pytorch】pytorch入门学习
    pycharm中出现unresolved reference的解决办法
  • 原文地址:https://www.cnblogs.com/wj204/p/3476688.html
Copyright © 2020-2023  润新知