繼承RichTextBox,完成代碼編輯器,支援文法高亮、行號顯示(二);

來源:互聯網
上載者:User

    當前輸入行閃爍終於比較滿意的解決了。

    以處理高亮匹配時,以前是直接在rt裡使用selectionstart、selectedtext替換原始文本;

    首先將需要處理的文本處理完成,以RTF格式暫存到變數中,一次性替換到原始文本位置,效果有所好轉,但偶有閃爍,因為selectionlength的範圍過大;在行中間換行時,替換的是原行和新行,閃爍更為嚴重。

    那就逐行處理,將一行文本處理後,存為RTF到變數,使用SendMessage的WM_SETREDRAW(&HB)訊息;

    禁用重新整理;

    SendMessage(Me.Handle, WM_SETREDRAW, 0, 0)
    啟用重新整理;
    SendMessage(Me.Handle, WM_SETREDRAW, 1, 0)

 

' 還回textbox中<br /> '禁止重新整理,清除範圍內各行的文字;<br /> Me.rt_AllowRefresh(False)<br /> MyBase.SelectionStart = _first<br /> MyBase.SelectionLength = _length<br /> MyBase.SelectedText = ""<br /> MyBase.SelectionLength = 0<br /> MyBase.SelectionStart = _first</p><p> '允許重新整理, 添加各行的文本;<br /> Me.rt_AllowRefresh(True)<br /> MyBase.SelectedRtf = m_buff.ToString

 

    在清除原來文本時,禁止重新整理,rt的指定行的文本被刪除,但是由於RT沒有重新整理,看起來文本還存在,然後啟用重新整理,還迴文本,這樣文本更新速度很快,但是RT又重新整理了,所以看起來只是文字顏色變化而已。

     上面的允許重新整理,是在第二重設插入點位置,這是因為,把允許重新整理放在第二重設插入點位置前,文字是不會閃爍的,但是該行最前方,總有一個插入點游標(“|”)的影子在閃爍(不輸入文字就沒有);

    到此,一個比較完善代碼編輯器就完成了。

 

完整原始碼下載: http://download.csdn.net/detail/xiaoid/5088417

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.