zoukankan      html  css  js  c++  java
  • 如何让其它的类对象访问主程序控件?

    在主程序有一个textbox控件,用来显示一些调试的信息或错误信息,如果其它类也需要访问的话,需要把这个控件设置为public 才可以,当时这样做违背高内聚,低耦合的原则,所以使用委托代理的方式来实现,首先在主程序类中定义如下函数:

         public void ShowLogInfo(string text, bool showdate = false, bool isrt = false)
            {
                string logtxt = string.Empty;
    
                if (showdate)
                {
                    logtxt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", DateTimeFormatInfo.InvariantInfo) + " " + text;
                }
                else
                {
                    logtxt = text;
                }
    
                //用delegate为了能让其它外部类也能调用 SaveLog 函数
                MethodInvoker threadappend = delegate()
                {
                    tb_Log.AppendText(logtxt + "
    ");
                    SaveLog(logtxt,isrt); 
                }; 
                BeginInvoke(threadappend); 
                
                Application.DoEvents();
            }

    假设在类 ZKAction 中需要访问这个控件,则需要声明如下的委托:(注意参数的类型和数目要一致)

            //显示提示日志的委托代理事件
            public delegate void OnShowZKLogInfo(string text,bool showdate=false,bool isrt=false);
            public event OnShowZKLogInfo ShowZKLogInfo;

    然后在主程序中创建类ZKAction的对象时,就可以绑定这个事件:

    public ZKAction zkaction = new ZKAction(); 
    zkaction.ShowZKLogInfo += new ZKAction.OnShowZKLogInfo(ShowLogInfo);

    这样设置后,就可以在类ZKAction的内部方法中使用 ShowZKLogInfo 来把日志显示到主程序的 textbox 中了。

  • 相关阅读:
    poj3673
    poj3438
    poj3461
    poj3518
    poj3672
    变秃了,也变强了!爆肝吐血整理出的超硬核JVM笔记分享!
    左手字节,右手阿里,我是如何通阿里架构师的java面试文档,拿到多家大厂offer的
    Java异常处理与常用类
    copy_{to, from}_user()的思考
    vi文本编辑器常用指令功能
  • 原文地址:https://www.cnblogs.com/lpq21314/p/9475462.html
Copyright © 2011-2022 走看看