zoukankan      html  css  js  c++  java
  • C#运动控制05日志显示(ListView和imageList控件使用)

    1,主窗体:中添加日志的委托

            private void FrmMain_Load(object sender, EventArgs e)
            {
                //打开默认的窗体:实时监控窗体
                CommonNaviButton_ClickEvent(this.btn_monitor,null);
    
                //板卡初始化
                AddLog(0, "板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化");
                //测试其他的日志显示
                for (int i = 0; i < 100; i++)
                {
                    AddLog(i,i.ToString()+ "板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化板卡正在初始化");
                }
            }
    
            //添加日志委托
            private Action<int, string> AddLog;
    

      

    2,实时监控窗体:添加imageList

    3,实时监控窗体:添加ListView

    【2.1】ListView设置1

    视图:Details

    小imageList:选择上面的imageList

     【2.2】ListView设置2:添加2列

     【2.3】ListView设置3:不显示列表头

     【2.4】ListView设置4:可以看到完整信息内容

    ShowItemToolTips:True。默认False改到True。当内容长度超过1行,可以提示看到完成的信息内容

    【2.5】ListView设置5:不显示滚动条

    Scrollable:False:不显示滚动条

    3,实时监控窗体:编写委托对应的方法

        public partial class FrmMonitor : Form
        {
            public FrmMonitor()
            {
                InitializeComponent();
    
                //设置第二列内容的宽度
                this.lvw_info.Columns[1].Width = this.lvw_info.Width - this.lvw_info.Columns[0].Width;
            }
    
            /// <summary>
            /// 添加日志信息
            /// </summary>
            /// <param name="index">日志等级(0:info,1:warning,2:error)</param>
            /// <param name="log">日志信息</param>
            public void AddLog(int index, string log)
            {
                if (!this.lvw_info.InvokeRequired)//如果没有跨线程访问
                {
                    ListViewItem lstItem=new ListViewItem(CurrentTime,index);
                    lstItem.SubItems.Add(log);
                    this.lvw_info.Items.Insert(0, lstItem);//保证最新的显示在第一条
                    //只保留最后100条记录
                    if (lvw_info.Items.Count > 100)
                    {
                        lvw_info.Items.RemoveAt(100);
                    }
                }
                else//如果有线程从多线程使用
                {
                    this.lvw_info.Invoke(new Action(() =>
                    {
                        ListViewItem lstItem = new ListViewItem(CurrentTime, index);
                        lstItem.SubItems.Add(log);
                        this.lvw_info.Items.Insert(0, lstItem);//保证最新的显示在第一条
                        //只保留最后100条记录
                        if (lvw_info.Items.Count > 100)
                        {
                            lvw_info.Items.RemoveAt(100);
                        }
                    }));
                }
            }
    
            private string CurrentTime
            {
                get { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); }
            }
    
    
    
        }
    

     

    4,主窗体打开监控窗体的时候:给委托绑定方法

                            frm=new FrmMonitor();
                            //打开监控窗体的时候,主窗体的AddLog委托绑定监控窗体的AddLog方法
                            this.AddLog = ((FrmMonitor) frm).AddLog;
    

      

    5,日志效果:

  • 相关阅读:
    $.ajax 中的contentType
    如何能让MAC和PC都能读写移动硬盘
    bootstrap中的明星属性
    SQL Server2012如何导出sql脚本并且还原数据库
    Http 请求头中 X-Requested-With 的含义
    jquery实现模拟select下拉框效果
    ASP.NET应用技巧:非托管COM组件的使用
    COM和.NET的互操作
    NET调用Com组件事例
    com组件
  • 原文地址:https://www.cnblogs.com/baozi789654/p/15647448.html
Copyright © 2011-2022 走看看