我有一个包含TextBox的Windows窗体应用程序。我想用新的RichTextBox对特定TextBox进行毯子替换。如果我从设计器中删除有问题的TextBox,Visual Studio 2012是否会自动删除任何引用文本框的代码?
有没有办法优雅地执行此操作而不会危及已存在的代码?
我假设一种方法是在cs文件中进行字符串替换,甚至包括Designer.cs文件,并查找包含控件名称(txtQuestion)的任何字符串,并将其替换为新名称RichTextBox控件。
我希望Visual Studio可以采用更简单的方法来实现这一目标。
答案 0 :(得分:3)
我不知道一种真正简单的方法。也就是说,手动执行应该不是很复杂:
TextBox
更改为RichTextBox
。Name
属性,并且VS将自动重构引用该字段的代码。显式引用该控件字段的任何代码都将自动更新。sender
参数而不是仅仅引用该字段(例如,当同一事件处理程序与多个控件一起使用时会发生这种情况)。那些地方,你必须自己追踪并改变它被分配到正确类型的演员和变量。请注意,无论如何,IDE都不会像实际的方式那样可靠地完成这项工作。 TextBox
的{{1}}成员不仅仅是TextBoxBase
TextBox
RichTextBox
成员共同继承或覆盖的成员,所以实际使用现在为RichTextBox
的字段的所有代码都应该“正常工作”。我无法想到任何可能的例外情况,但如果它们存在,它们应该很少,只需编译代码就很容易找到。
可能像Resharper这样的工具可以让上面的一些更容易。我不确定......我自己不用它。但如果上述内容看起来过于繁琐,您可能会看看他们是否有试用版,看看它是否有助于这种情况。