LogControl.cs 3.5 KB
using Common;
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UControl.UC
{
    public partial class LogControl : UserControl
    {
        public LogControl()
        {
            InitializeComponent();
            logView = new LogView();
            ShowEdit(false);
        }
        LogView logView;
        public bool ShowDebug
        {
            get { return logView.ShowDebug; }
            set { logView.ShowDebug = value; }
        }
        public bool ShowInfo { get { return logView.ShowInfo; } set { logView.ShowInfo = value; } }
        public bool ShowWarn { get { return logView.ShowWarn; } set { logView.ShowWarn = value; } }
        public bool ShowError { get { return logView.ShowError; } set { logView.ShowError = value; } }
        /// <summary>
        /// 加载需要显示日志类
        /// </summary>
        /// <param name="logBean">null则显示主日志</param>
        public void Init(LogBean logBean = null)
        {
            if (logBean == null)
            {
                logView.Init(listView1);
            }
            else
            {
                logView.Init(listView1, logBean);
            }
        }
        /// <summary>
        /// 最多显示信息数量
        /// </summary>
        public int MaxDisplayCnt { get { return logView.MaxDisplayMsg; } set { logView.MaxDisplayMsg = value; } }

        private void chkShowDebug_CheckedChanged(object sender, EventArgs e)
        {
            ShowDebug = chkShowDebug.Checked;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            logView.ClearLog();
        }
        private void ShowEdit(bool show)
        {
            if (IsHandleCreated)
                this.Invoke(new Action(() => {
                    chkShowDebug.Visible = show;
                    chkShowInfo.Visible = show;
                    chkShowWarn.Visible = show;
                    chkShowError.Visible = show;
                    textBoxMaxCnt.Visible = show;
                    button1.Visible = show;
                    showedit = show;
                })
            );
            else
            {
                chkShowDebug.Visible = show;
                chkShowInfo.Visible = show;
                chkShowWarn.Visible = show;
                chkShowError.Visible = show;
                textBoxMaxCnt.Visible = show;
                button1.Visible = show;
                showedit = show;
            }
        }
        private void chkShowInfo_CheckedChanged(object sender, EventArgs e)
        {
            ShowInfo = chkShowInfo.Checked;
        }

        private void chkShowWarn_CheckedChanged(object sender, EventArgs e)
        {
            ShowWarn = chkShowWarn.Checked;
        }

        private void chkShowError_CheckedChanged(object sender, EventArgs e)
        {
            ShowError = chkShowError.Checked;
        }

        private void textBoxMaxCnt_TextChanged(object sender, EventArgs e)
        {
            if (int.TryParse(textBoxMaxCnt.Text, out int cnt))
            {
                MaxDisplayCnt = cnt;
            }
            else
                MaxDisplayCnt = 25;
        }
        bool showedit = false;
        private void listView1_MouseEnter(object sender, EventArgs e)
        {
            if (showedit)
                return;
            Task.Factory.StartNew(delegate
            {
                ShowEdit(true);
                Thread.Sleep(5000);
                ShowEdit(false);
            });

        }
    }
}