winfrom窗体加载控制台程序,可以自定义输出语句颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winfrom窗体加载控制台程序,可以自定义输出语句颜色相关的知识,希望对你有一定的参考价值。

winfrom窗体加载控制台程序,可以自定方输出语句颜色,如下图所示

技术分享

 

怎么实现的此功能,网上有大把的方法,我这里已经把方法打包成了一个类,只需要引用调用就可以使用了,写的比较粗糙,如有发现需要改进的地方欢迎提出!

至于使用方法很简单,把这个类复制到解决方案中,在引用 LLog , 另外在 程序初始化下面加上 XLog.AllocConsole();  就可以在想使用的地方调用方法 XLog.Logx() 使用了,

如图所示:

技术分享

注意:图片中显示 [/c15] xxxxxx[/c16] 必须成对出现才不会出现输出颜色覆盖下一行内容, 此方法效率略低,水平有限还没想出高效方法,如想某行只输出某种颜色必须在语句后面加上 [/c16] 结尾  如:[/c1] 我是内容 [/c16]

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Runtime.InteropServices;
  5 using System.Text;
  6 
  7 namespace LLog
  8 {
  9     /// <summary>  
 10     /// 与控制台交互  
 11     /// </summary>  
 12     static class XLog
 13     {
 14 
 15         [DllImport("kernel32.dll")]
 16         public static extern bool AllocConsole();
 17         [DllImport("kernel32.dll")]
 18         public static extern bool FreeConsole();
 19 
 20         /// <summary>
 21         /// 修改控制台标题
 22         /// </summary>
 23         public static string Title
 24         {
 25             get
 26             {
 27                 string result;
 28                 try
 29                 {
 30                     result = Console.Title;
 31                 }
 32                 catch
 33                 {
 34                     result = "";
 35                 }
 36                 return result;
 37             }
 38             set
 39             {
 40                 Console.Title = value;
 41             }
 42         }
 43 
 44 
 45         /// <summary>
 46         /// 调用输出日志方法从c1-c15 共15种颜色
 47         /// </summary>
 48         /// <param name="code">[c1]蓝色 [c2]青色(蓝绿色) [c3]藏蓝色 [c4]深紫色(深蓝绿色) [c5]深灰色 [c6]深绿色 [c7]深紫红色 [c8]深红色 [c9]深黄色 [c10]灰色 [c11]绿色 [c12]紫红色 [c13]红色 [c14]白色 [c15]黄色 [c16]默认灰色</param>
 49         public static void Logx_Console(string code)
 50         {
 51             //①②③④⑤⑥⑦⑧⑨⑩⑾⑿⒀⒁⒂
 52             string str = code;
 53             string output = str.Replace("[/c1]", "").Replace("[/c2]", "").Replace("[/c3]", "").Replace("[/c4]", "").Replace("[/c5]", "").Replace("[/c6]", "").Replace("[/c7]", "").Replace("[/c8]", "").Replace("[/c9]", "").Replace("[/c10]", "").Replace("[/c11]", "").Replace("[/c12]", "").Replace("[/c13]", "").Replace("[/c14]", "").Replace("[/c15]", "").Replace("[/c16]","");
 54             string display = "";
 55             foreach (char c in output)
 56             {
 57                 if (c == )
 58                 {
 59                     Console.ForegroundColor = ConsoleColor.Blue;
 60                 }
 61 
 62                 if (c == )
 63                 {
 64                     Console.ForegroundColor = ConsoleColor.Cyan;
 65                 }
 66 
 67                 if (c == )
 68                 {
 69                     Console.ForegroundColor = ConsoleColor.DarkBlue;
 70                 }
 71                 if (c == )
 72                 {
 73                     Console.ForegroundColor = ConsoleColor.DarkCyan;
 74                 }
 75 
 76                 if (c == )
 77                 {
 78                     Console.ForegroundColor = ConsoleColor.DarkGray;
 79                 }
 80 
 81                 if (c == )
 82                 {
 83                     Console.ForegroundColor = ConsoleColor.DarkGreen;
 84                 }
 85 
 86                 if (c == )
 87                 {
 88                     Console.ForegroundColor = ConsoleColor.DarkMagenta;
 89                 }
 90 
 91                 if (c == )
 92                 {
 93                     Console.ForegroundColor = ConsoleColor.DarkRed;
 94                 }
 95 
 96                 if (c == )
 97                 {
 98                     Console.ForegroundColor = ConsoleColor.DarkYellow;
 99                 }
100 
101                 if (c == )
102                 {
103                     Console.ForegroundColor = ConsoleColor.Gray;
104                 }
105 
106                 if (c == )
107                 {
108                     Console.ForegroundColor = ConsoleColor.Green;
109                 }
110 
111                 if (c == )
112                 {
113                     Console.ForegroundColor = ConsoleColor.Magenta;
114                 }
115 
116                 if (c == )
117                 {
118                     Console.ForegroundColor = ConsoleColor.Red;
119                 }
120 
121                 if (c == )
122                 {
123                     Console.ForegroundColor = ConsoleColor.White;
124                 }
125 
126                 if (c == )
127                 {
128                     Console.ForegroundColor = ConsoleColor.Yellow;
129                 }
130 
131                 if (c == ) 
132                 {
133                     Console.ForegroundColor = ConsoleColor.Gray;
134                 }
135 
136                 display = c.ToString();
137                 display = display.Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("", "");
138                 Console.Write(display);
139             }
140         }
141 
142         /// <summary>
143         /// 传入字符跟指定的颜色标签
144         /// </summary>
145         /// <param name="str">[c1]蓝色 [c2]青色(蓝绿色) [c3]藏蓝色 [c4]深紫色(深蓝绿色) [c5]深灰色 [c6]深绿色 [c7]深紫红色 [c8]深红色 [c9]深黄色 [c10]灰色 [c11]绿色 [c12]紫红色 [c13]红色 [c14]白色 [c15]黄色 [c16]默认灰色</param>
146         public static void Logx(string str)
147         {
148             XLog.Logx_Console(str + "\\r\\n");
149         }
150     }  
151 }

 

以上是关于winfrom窗体加载控制台程序,可以自定义输出语句颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在在WinFrom的DataGridView中做到数据持续动态加载而不卡死

winfrom 基类窗体与子类窗体load事件详解

2017-12-06winfrom 窗体自启最大化,控件自适应

Winfrom窗体应用程序___DataGridView

winfrom 子窗体调用父窗体中的方法

2021-11-22 WinFrom面试题 Form窗体的常用事件有哪些?