欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現(xiàn)UI控件輸出日志的方法詳解

 更新時間:2022年10月28日 08:28:36   作者:Csharp小記  
一般情況下,我們的日志文件是用來記錄一些關(guān)鍵操作或者異常,并且是后臺存儲,并不對外開放的,但是也有些時候,需要將一些操作步驟、記錄等直接顯示在窗體上。本文就將利用UI控件輸出日志效果,需要的可以參考一下

文章描述

一般情況下,我們的日志文件是用來記錄一些關(guān)鍵操作或者異常,并且是后臺存儲,并不對外開放的;但是也有些時候,特別是做一些小工具程序,需要將一些操作步驟、記錄等直接顯示在窗體上。以便于使用者能夠知道執(zhí)行進(jìn)度等情況。

所以,我們可以簡單封裝一下,寫個專門用來輸出日志的控件;并且以不同的顏色表示不同的狀態(tài),讓日志更直觀明了。

如果將以下自定義控件放到控件庫中(即在新建項目的時候選擇Windows窗體控件庫),在其他程序中使用起來就很方便了,只要將這個dll拖到工具箱面板中,就可以在工具箱中看到這個控件。使用的時候直接從工具箱中拖出來就可以了。

開發(fā)環(huán)境

.NET Framework版本:4.5

開發(fā)工具

Visual Studio 2013

實現(xiàn)代碼

public partial class ui_log : ListBox
    {
        public ui_log()
        {
            InitializeComponent();

            this.DrawMode = DrawMode.OwnerDrawFixed;
            this.BackColor = Color.Black;
            this.Font = new Font("黑體", 12);
        }

        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
        }

        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            base.OnDrawItem(e);

            if (e.Index >= 0 && this.Items.Count>0)
            {
                dynamic item = this.Items[e.Index];
                Brush brush = new SolidBrush(item.Color);
                e.Graphics.DrawString(item.Text, e.Font, brush, e.Bounds, StringFormat.GenericDefault);
            }
        }

        public  void Log(string text, Color color)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new Action(() => { Log(text, color); }));
                return;
            }
            this.Items.Add(new { Color = color, Text = text });
            this.SelectedIndex = this.Items.Count - 1;
        }
        public void LogInfo(string text)
        {
            Log(text, Color.Green);
        }
        public void LogError(string text)
        {
            Log(text, Color.Red);
        }
        public void LogWarinig(string text)
        {
            Log(text, Color.Yellow);
        }

        public void ClearLog()
        {
            this.Items.Clear();
        }
    }
private void button1_Click(object sender, EventArgs e)
        {
            ui_log1.LogInfo("Info");
            Thread.Sleep(300);
            ui_log1.LogError("Error");
            Thread.Sleep(300);
            ui_log1.LogWarinig("Warinig");
            Thread.Sleep(300);
            ui_log1.Log("White", Color.White);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            ui_log1.ClearLog();
        }

實現(xiàn)效果

代碼解析:首先是寫了一個自定義控件,繼承自ListBox;然后設(shè)置下DrawMode屬性,這個很重要,否則不會觸發(fā)DrawItem;最后在DrawItem事件中,對數(shù)據(jù)進(jìn)行重繪。

做完上述處理后,就不要直接使用Items.Add了,需要對Items.Add也進(jìn)行一次封裝,將顏色也傳進(jìn)去,即:this.Items.Add(new { Color = color, Text = text });

到此這篇關(guān)于C#實現(xiàn)UI控件輸出日志的方法詳解的文章就介紹到這了,更多相關(guān)C# UI控件輸出日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#?WPF后臺動態(tài)添加控件實戰(zhàn)教程

    C#?WPF后臺動態(tài)添加控件實戰(zhàn)教程

    最近嘗試用wpf在后臺動態(tài)添加控件,所以下面這篇文章主要給大家介紹了關(guān)于C#?WPF后臺動態(tài)添加控件的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 自定義實現(xiàn)Json字符串向C#對象轉(zhuǎn)變的方法

    自定義實現(xiàn)Json字符串向C#對象轉(zhuǎn)變的方法

    自定義實現(xiàn)Json字符串向C#對象轉(zhuǎn)變的方法,需要的朋友可以參考一下
    2013-03-03
  • C#中的Linq to Xml詳解

    C#中的Linq to Xml詳解

    這篇文章主要介紹了C#中的Linq to Xml詳解,本文給出轉(zhuǎn)換步驟以及大量實例,講解了生成xml、查詢并修改xml、監(jiān)聽xml事件、處理xml流等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • C# 實現(xiàn)把double 存成兩位精度小數(shù)

    C# 實現(xiàn)把double 存成兩位精度小數(shù)

    這篇文章主要介紹了C# 實現(xiàn)把double 存成兩位精度小數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • c#詳解datetime使用示例

    c#詳解datetime使用示例

    本文主要介紹了c# datetime使用示例,大家參考使用吧
    2014-05-05
  • 深入多線程之:解析線程的交會(Thread Rendezvous)詳解

    深入多線程之:解析線程的交會(Thread Rendezvous)詳解

    本篇文章是對線程的交會(Thread Rendezvous)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#代碼實現(xiàn)對AES加密解密

    C#代碼實現(xiàn)對AES加密解密

    這篇文章主要介紹了C#代碼實現(xiàn)對AES加密解密的相關(guān)資料,AES是一個新的可以用于保護(hù)電子數(shù)據(jù)的加密算法,需要的朋友可以參考下
    2015-12-12
  • C#中Timer使用及解決重入問題

    C#中Timer使用及解決重入問題

    本文主要介紹了C#中Timer使用及解決重入問題的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 基于WPF實現(xiàn)視頻封面查看器

    基于WPF實現(xiàn)視頻封面查看器

    這篇文章主要為大家詳細(xì)介紹了WPF如何實現(xiàn)視頻封面查看器,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-11-11
  • c# 委托的本質(zhì)是什么

    c# 委托的本質(zhì)是什么

    這篇文章主要介紹了c# 委托的本質(zhì)是什么,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論