簡體   English   中英

用RichTextBox替換WinForms TextBox

[英]Replacing a WinForms TextBox with a RichTextBox

我有一個包含TextBox的Windows窗體應用程序。 我想用新的RichTextBox 替換特定的TextBox。 如果我從設計器中刪除有問題的TextBox,Visual Studio 2012是否會自動刪除任何引用文本框的代碼?

有沒有辦法在不破壞已經存在的代碼的情況下優雅地執行此操作?

我假設一種方法是在cs文件中進行字符串替換,甚至包括Designer.cs文件,並找到包含控件名稱(txtQuestion)的任何字符串,並將其替換為新的RichTextBox控件的名稱。

我希望Visual Studio有一個更簡單的方法來做到這一點。

我不知道一個真正簡單的方法來做到這一點。 也就是說,手動完成它應該不是很復雜:

  • 在* .Designer.cs文件中,應該只有兩個位置來更改類型:字段聲明以及創建新實例的位置。 只需將類型名稱從TextBox更改為RichTextBox
  • 實際上並不需要更改控件的名稱(即其字段的名稱),但如果您真的想要,則可以在控件的“屬性”窗口中更改Name屬性,VS將自動重構代碼引用那個領域。 明確引用該控件字段的任何代碼都將自動更新。
  • 如果你真的不走運,你會在代碼中有一些位置,你可以將控件的對象引用轉換為它的實際類型,例如在事件處理程序中你使用sender參數而不是僅僅引用字段(某些東西)當例如相同的事件處理程序與多個控件一起使用時發生的情況)。 那些地方,你必須自己追蹤並改變它被分配到正確類型的演員和變量。 請注意,無論如何,IDE都不具備可靠地執行該工作的實用方法。

很少有TextBox成員,它們不僅僅是TextBoxBase成員的繼承或覆蓋, TextBoxBaseTextBoxRichTextBox之間共享的基類,所以所有實際使用現在是RichTextBox的字段的代碼都應該“正常工作” ”。 我無法想到任何可能的例外情況,但如果它們存在,它們應該很少,並且只需編譯代碼就很容易找到。

可能像ReSharper的一個工具,可以讓上面的一些更容易。 我不確定......我自己不用它。 但如果上述內容看起來過於繁瑣,您可能會看看他們是否有試用版,看看它是否有助於這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM