2009-06-12 89 views
1

我需要在C#中創建一個文本編輯控件,我不確定從哪裏開始。如何創建自定義文本編輯控件?

對於一些情況:C#程序將編輯XML文檔(使用此控件)。 XML文檔可以轉換爲HTML。

的XML文件將包含以下內容:

  • 普通文本(顯然)
  • 標題(將不同格式)
  • 列表
  • 圖片
  • 影片(他們不」噸需要在控制中查看,但需要有一個盒子或東西,以表明他們在那裏)

我希望此控件能夠接受XML並呈現它,並充當XML的WYSIWYG編輯器。目前,我並不關心如何實現上述所有細節(雖然最終需要實現),但我只想知道從哪裏開始創建這個控件。我應該從TextBoxBase(或TextBox)繼承並從那裏繼承嗎?我需要重寫哪些方法?或者我應該從Control繼承(在這種情況下,我認爲我需要所有的文本框 - 選擇文本,複製和粘貼,脫字符等 - 我自己,這是我不想做的事情,但是如果必須,我準備好了)。

我知道像TX Text Control這樣的預先存在的控件,可以做我想要的東西(儘管這比我需要的功能強大得多),但我不能使用這些(這是爲了一個大學項目),除此之外,我真的很想知道如何從頭開始。

+0

你爲什麼不去FCKeditor並研究它! – TheVillageIdiot 2009-06-12 06:16:52

回答

2

創建與語法高亮,代碼完成等功能豐富的版本控制已被#develop的開發人員在他們的書「剖析C#應用程序」

http://www.icsharpcode.net/OpenSource/SD/InsideSharpDevelop.aspx

討論的主題(我認爲你不能購買它,鏈接說它可以免費下載,但鏈接似乎被打破)

該書基本上解釋了#develop的核心功能(V1之前,所以它有點過時) ,包括代碼編輯器和(也是重要的)他們在t期間犯的錯誤他處理。

0

Control繼承將需要大量的工作,如繪畫,實施默認行爲,等等。

我認爲你可以學習的RichTextBox控制,因爲你的所有要求,可以通過改變RichTextBox控件來實現啓動。

1

幾年前,我用優秀的開源編輯器Scintilla作爲基礎,從中派生出一個自定義的C#控件。工作很好。如今,如果利用已經爲您完成包裝工作的ScintellaNET項目(CodePlex),現在更容易。當然,如果您不介意付款,Actipro的SyntaxEditor不會出錯。

2

我應該繼承TextBoxBase(或TextBox)並從那裏?

您不能從TextBoxBase繼承(其構造函數爲internal)。

因此,您可以從TextBox或Control或UserControl繼承。

TextBox的問題在於,它的繪製是由非託管代碼完成的,當您重寫OnPaint時不會覆蓋它。詳情請參閱this question, answer and comments

我知道已經存在的控件像TX文本控制的該做些什麼像什麼,我想

的TX文本控制是別的東西:它使用Win32代碼實現,用.NET包裝/ API 。

相關問題