2009-11-08 92 views

回答

1

您正在使用的WinForms或WPF?

如果是WPF,你可以看看AvalonEdit。它是免費的,開源的,它在SharpDevelop(開源IDE)中使用。

1

您可以在richtextbox中更改所選單詞的字體。看看控件的Select和SelectedFont屬性。

但基本上,您需要遍歷單詞,檢查單詞是否存在於關鍵字中,然後使用上述屬性更改字體。

0

不完全是你的問題的答案,但你看看SharpDevelop文本編輯器組件?它非常輕巧(< 200kB IIRC),可以很容易地嵌入到WinForms應用程序中,併爲內置的多種語言提供語法高亮顯示。

否則,您可能要查看this CodeProject page。它會在輸入時重新格式化RTF,對於大型文件來說這不是很有效,它包含一些令人毛骨悚然的塊,所以我不確定我是否會將它用於生活關鍵型應用程序中,但它絕對是一個好起點指出如何做到這一點。

0

語法突出顯示並不是一項容易執行的任務。你可以找到許多解決方案(比如涉及修改RTF的解決方案)是一次性解決方案。如果您想在編輯期間動態突出顯示和取消突出顯示的文字,您的代碼必須準備好。我不會重新發明輪子並使用ICSharp.TextEditor或類似來解決您的問題。

+2

語法突出顯示,對於設計爲在渲染之前回叫或迭代接收文本的文本渲染器,實際上非常簡單:它只是一種詞法分析,根據其標記類型對文本進行分類。但RTF和其他豐富的編輯器不是這樣設計的,模型數據與其表示之間是分開的。 – 2009-11-08 19:31:58

+0

是的,似乎RTF現在看起來挺舊...... :-) – jdehaan 2009-11-08 22:20:31

4

Scintilla控制是一個很好的源代碼編輯器,其中包括一系列其他功能中的語法突出顯示。您可以將其嵌入到自己的應用程序中,並且有一個.NET wrapper可用。

使用Scintilla,您可以指定關鍵字,然後在鍵入時應用語法高亮顯示。

+0

如何安裝.dll? – 2009-11-12 01:56:13

+0

如果您從http://scintillanet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34393下載.NET Wrapper,那麼您可以將文件ScintillaNet.dll添加到項目的「參考」(如果您是使用Visual Studio)。 – 2009-11-12 09:29:28

+0

需要將其中一個dll部署到windows \ system32,這是一個很大的缺點 – 2010-01-19 22:18:25