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 中了。

  • 相关阅读:
    Python调用sqlAlchemy
    Docker容器管理及代码调用
    Spring设置动态定时任务
    多数据源实现读写分离
    Spring整合EHCache框架
    springBoot整合Redis
    初探Mybaties整合分页插件PageHelper(1)
    流程控制,循环结构,for,while循环
    变量,常量,格式化输入输出,运算符
    编程语言介绍,变量介绍
  • 原文地址:https://www.cnblogs.com/lpq21314/p/9475462.html
Copyright © 2011-2022 走看看