• 如何让其它的类对象访问主程序控件?


    在主程序有一个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 中了。

  • 相关阅读:
    记录我的第一次电话面试
    Spring整合Mybatis出现Access denied for user 'Think'@'localhost' (using password: YES)
    Lombok基本使用
    log4j整理
    mybatis常用的配置解析
    Java实现邮件发送
    Java获取UUID
    Java实现文件下载
    Java实现文件上传
    Java跳出多层for循环的4种方式
  • 原文地址:https://www.cnblogs.com/lpq21314/p/9475462.html
Copyright © 2020-2023  润新知