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中做到数据持续动态加载而不卡死