C#--运动控制05--日志显示(ListView和imageList控件使用)

2021/12/5 22:46:45

本文主要是介绍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,日志效果:

 



这篇关于C#--运动控制05--日志显示(ListView和imageList控件使用)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程