2012-02-18 7 views
0

プログラムのようなメモ帳でOKです。私は予約語を青で印刷し、テキストは余白の中に収まるようにしたいと思っています。 ? これは私がこれまで持っているものです。色で予約されたキーワードC#を印刷します

int charPag = 0; 
     int linPag = 0; 
     Font rodFont = new Font("Courier New", (float)10.0); 

     e.Graphics.MeasureString(stringToPrint, txtMain.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, out charPag, out linPag); 
     e.Graphics.DrawString(stringToPrint, txtMain.Font, new SolidBrush(Color.Black), e.MarginBounds, StringFormat.GenericTypographic); 
     stringToPrint = stringToPrint.Substring(charPag); 

     e.Graphics.DrawLine(Pens.Black, e.MarginBounds.Left, e.MarginBounds.Bottom, e.MarginBounds.Right, e.MarginBounds.Bottom); 
     e.Graphics.DrawString(numPag.ToString(), rodFont, Brushes.Black, e.MarginBounds.Right - (numPag.ToString().Length * rodFont.SizeInPoints), e.MarginBounds.Bottom + 5); 
     if (stringToPrint.Length > 0) 
     { 
      e.HasMorePages = true; 
      numPag++; 
     } 
+4

なぜそこに、利用可能な無料のため、すでにあるものを再発明?あなたのアプリケーションでtextAreaとしてScintilla.NETを使用してください... http://scintillanet.codeplex.com/ –

+1

それは学校のためであり、私はそれを自分で行う必要があります。(残念ながら) –

+1

Erm、待って、助けを求めています自分でやる? [宿題]タグを使用します。 –

答えて

0

予約語

public HashSet<string> _reservedWords = 
    new HashSet { "if", "else", "class", "..." }; 

を保持HashSetのを作成します。次に、テキスト行に含まれる識別子を見つける必要があります。識別子は、文字またはアンダースコアで始まり、文字、下線、および数字で構成される文字シーケンスです。

あなたは識別子を見つけたら、それは予約済みのキーワードであるかどうかを確認するか

bool reserved = _reservedWords.Contains(word); 
+0

問題は、識別子を見つける方法です。 私はスプリット( '')を使用していますが、人が2つ以上のスペースを挿入した場合は、1としか読み取れません。 私はそれを正しく説明していますか? –

+0

文字列分割オプション 's.Split(new char [] {''}、StringSplitOptions.RemoveEmptyEntries);' –

+0

文字列に句読点やその他の特殊文字を含めることができる場合は、正規表現を使用して単語を検索することができます、 'var matches = Regex.Matches(s、@" \ w + ");'となります。 'foreach(マッチでのマッチマッチ){...}'。マッチでは、単語と単語自体の位置( 'match.Index')と長さ(' match.Length')がわかります( 'match.Value')。 –

関連する問題