1. 程式人生 > >C# RechText 語法著色

C# RechText 語法著色

【關於字型格式】

設定的是第一個字元的顏色,這時richtextBox的rtf中記錄下位置0的顏色,重置text時,在rtf中的位置從位置0開始,因此顏色還是Color.Red,第三次也應該同樣如此 richTextBox1.Text = "123"; richTextBox1.Select(0, 1); richTextBox1.SelectionColor = Color.Red; richTextBox1.Clear();//清除文字,包括樣式 //或richTextBox1.Text=""; richTextBox1.Text = "abc"; richTextBox1.Text = "efg"; 這樣重置後的文字顏色就會是黑色.

【關鍵字著色】

publicpartialclass RichTextBox : Form     ...{         public RichTextBox()         ...{              InitializeComponent();          }         privatevoid tSql_TextChanged(object sender, EventArgs e) //文字框改變事件         ...{             int index =this.tSql.SelectionStart;    //記錄修改的位置

            this.tSql.SelectAll();             this.tSql.SelectionColor = Color.Black;             string[] keystr =...{ "select ", "from ", "where ", " and ", " or ", " order ", " by ", " desc ", " when ", " case ",    " then ", " end ", " on ", " in ", " is ", " else ", " left ", " join ", " not
", " null " }
;             for (int i =0; i < keystr.Length; i++)                 this.getbunch(keystr[i], this.tSql.Text);             this.tSql.Select(index, 0);     //返回修改的位置             this.tSql.SelectionColor = Color.Black;          }         publicint getbunch(string p, string s) //給關鍵字上色         ...{             int cnt =0; int M = p.Length; int N = s.Length;             char[] ss = s.ToCharArray(), pp = p.ToCharArray();             if (M > N) return0;             for (int i =0; i < N - M +1; i++)             ...{                 int j;                 for (j =0; j < M; j++)                 ...{                     if (ss[i + j] != pp[j]) break;                  }                 if (j == p.Length)                 ...{                     this.tSql.Select(i, p.Length);                     this.tSql.SelectionColor = Color.Blue;                      cnt++;                  }              }             return cnt;          }      }

【繪製顏色提議】

最好的做法是繼承RichTextBox,過載新類的Paint方法。 並且在設定SelectionLength的時候,禁止控制元件的重繪過程,這樣才不會出現被語法高亮的文字有一個突然選中的過程。 以下2個方法將會對你解決這一問題有很大的幫助. [DllImport("user32")] private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, IntPtr lParam); private const int WM_SETREDRAW = 0xB; //停止控制元件的重繪 private void BeginPaint() { SendMessage(yourRichTextBox.Handle, WM_SETREDRAW, 0, IntPtr.Zero); } //允許控制元件重繪. private void EndPaint() { SendMessage(yourRichTextBox.Handle, WM_SETREDRAW, 1, IntPtr.Zero); yourRichTextBox.Refresh(); }

相關推薦

C# RechText 語法著色

【關於字型格式】 設定的是第一個字元的顏色,這時richtextBox的rtf中記錄下位置0的顏色,重置text時,在rtf中的位置從位置0開始,因此顏色還是Color.Red,第三次也應該同樣如此 richTextBox1.Text = "123"; ric

C# 基本語法

stack 執行指定 rect pub 標識符 ont check orderby end C# 是一種面向對象的編程語言。在面向對象的程序設計方法中,程序由各種相互交互的對象組成。相同種類的對象通常具有相同的類型,或者說,是在相同的 class 中。 例如,以 Recta

C#部分語法總結

mar rst comment 方式 啟動應用 != 不存在 如果 名稱 1. Frst和FirstOrDefault 1. Fist 如果查詢的數據不存在, 則拋System.InvalidOperationException異常 2. FirstOrdefault 如果

C#-01.語法基礎

不能 大寫字母 文件的 聲明 完全 傳遞參數 void 結果 數據 a. 語法基礎 i. 命名空間(namespace):是 C# 中組織代碼的方式,用來聲明命名空間 1. 語法:namespace 命名空間名稱

帶你一起學習C語言語法

作用域 鏈接 指向 nbsp itl switch語句 一個 字符串 單鏈表 《帶你學C帶你飛》第一季講解內容:C語言語法,我們會講變量、數組、函數、指針、結構、標準庫這樣一些純粹的C語言知識。 基本上你大學第一學期學的就是咱第一季的內容,我知道很多朋友學完C語言一時感覺沒

Lua和C語法差別

his 固定 腳本語言 c/c++ 進行 != 意義 特殊 oca 沒有main函數 Lua是腳本語言,沒有固定入口的main函數。當lua解析器解析某個lua代碼文件時,lua解析器一樣一行的解析lua腳本。 print("Hello lua") 將以上代碼保存在a

C語言語法匯總

很大的 高效 並不會 開始 現在 會有 入門學習 並不是 古人   從初學C語言到現在已經四年了,一直沒有找到空閑的時間來將自己學到的知識進行一次高效的匯總,古人又雲:學而不思則罔。近日忙裏偷閑,將自己四年來所學所思關於C語言基礎部分的學習進行一次高效的匯總,以便未來回憶起

C 基本語法

log span 標識符 基本語法 har 基本 邏輯 markdown got C 的令牌(Tokens) C 程序由各種令牌組成,令牌可以是關鍵字、標識符、常量、字符串值,或者是一個符號。例如,下面的 C 語句包括五個令牌: printf("Hello, Wo

C#基礎語法介紹

輸出 內容 body pan 輸出結果 c# join() args span 常用語法: 1、顯示數組內容 現在有個字符串型的數組 args,想要在log中輸出結果,那麽做法是用string.join() string[] args; string.Join(",",

教科書不應該再過多介紹的C語言語法

屏幕 檢查 展示 個數 鍵盤 上下 作用域 除法 vol C語言也許挺簡單,但是C標準有700頁,所以,如果你不想花費畢生精力去研究它,那麽你應該知道哪些部分可以被忽略。讓我們從二合字母或者三合字母開始,如果你的鍵盤缺少{}鍵,你可以用<%和%>來替代,就像是i

c++基本語法

基本 ++ typedef 必須 標識 bre 情況下 左值 red 此文主要針對有c語言基礎的人。 1. 基本語法 對象 - 對象具有狀態和行為。例如:一只狗的狀態 - 顏色、名稱、品種,行為 - 搖動、叫喚、吃。對象是類的實例。 類 - 類可以定義為描述對象行為/狀態

c語言語法目錄一

區分大小寫 計算器 無符號 使用 64位 AI 構架 include blog 1、#include<stdio.h>   include 是要告訴編譯器,包含一個頭文件   在c語言中,任何庫函數調用都需要提前包含頭文件   <頭文件> 代表讓c

C語言語法目錄二

常量 efault spa gist getchar() 語言 sig 需要 -s 1、char類型    char c;定義了一個char變量   ‘a‘ ; char常量   char的本質就是一個整數,一個只有一個字節大小的整數   char c; 定義一個有符號的c

C# 新語法收集

使用 PE 結果 IV ida AR 參數 gnu clas 內聯變量 使用int.tryparst時,先要申明變量,用於out參數 int d; int.tryparse(s,out d); 使用內聯變量寫法可以如下.功能一樣簡化了寫化 int.tryparse

C#基礎語法補充

tsp creat range 括號 exception 優先 info chan pem [學習筆記]前接:https://www.cnblogs.com/aland-1415/p/7360509.html 一、異常處理 1、格式 try{ } cat

C#基本語法之ref和out

ref和out ons 方式 基本 必須 sta read stat int ref參數必須在初始化的時候為其賦值,否則會報錯 static void Main(string[] args) { //out需要在初始化時為變量賦值,如果初始的值為空則會報錯

c++基礎語法之構造函數和初始化表

沒有 參數表 編譯器 ima http 構造函數 struct 轉換 顯示 筆者剛系統的重學了c++的語法,看到構造函數和初始化表這塊,發現這塊語法有點復雜且很雜,怕以後忘記,於是寫下此篇,以後回憶之用。 c++構造函數 3、構造函數(constructor

C語言語法教程-結構體

再次 staf har 語言 指向 取出 但是 進行 字符數 2018-09-30 結構體中成員變量地址是連續的,結構體用於描述記錄。 Create a struct //---------------------------- //struct1.c //創建一個結構體,

PCB 規則引擎之編輯器(語法著色,錯誤提示,程式碼格式化)

對於一個規則引擎中的指令碼程式碼編輯器是非常關鍵的,因為UI控制元件直接使用物件是規則維護者,關係到使用者體驗,在選用指令碼編輯器的功能時除了滿足程式碼的編輯的基本編輯要求外,功能還需要包含;語法著色,錯誤提示,程式碼格式化,程式碼摺疊,自動程式碼提示,自動補全程式碼等功能.(目前技術無法做到JS加斷點;邊除

5.1-day01-C++語言語法基礎

bank.cpp #include <iostream> using namespace std; //namespace { void print (int money) { cout << money <&