color_token_visitor.cs

来自「csharp-solution,C#高效编程源码」· CS 代码 · 共 74 行

CS
74
字号

namespace CSharp
{ 
    using System;
	using System.WinForms;
	using System.Drawing;
    
    public sealed class ColorTokenVisitor : ITokenVisitor
    {
		public ColorTokenVisitor(RichTextBox rtb)
		{
			target = rtb;	
			target.Clear();
		}
		
        public void Visit(ILineStartToken line)
        {
			String number = String.Format("{0,3} ", line.Number());
			Write(number, Color.Gray);
        }
        
        public void Visit(ILineEndToken t)
        {
            Write("\n", Color.White);
        }

        public void Visit(ICommentToken token)
        {
            Write(token, Color.Green);
        }
        
        public void Visit(IIdentifierToken token)
        {
            Write(token, Color.Black);
        }
        
        public void Visit(IKeywordToken token)
        {
            Write(token, Color.Blue);            
        }

        public void Visit(IDirectiveToken token)
        {
            Write(token, Color.Gray);
        }
        
        public void Visit(IWhiteSpaceToken token)
        {
            Write(token, Color.White);
        }
        
        public void Visit(IOtherToken token)
        {
            Write(token, Color.Black);
        }
        
		private void Write(IToken token, Color color) 
		{
			Write(token.ToString(), color);	
		}
		
        private void Write(string token, Color color)
        {
			target.AppendText(token);
			target.Select(index, index + token.Length);
			index += token.Length;
			target.SelectionColor = color;
		}
        
		private RichTextBox target;
		private int index = 0;
	} 
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?