用自定义类.NET Winforms替换现有控件

用自定义类.NET Winforms替换现有控件,.net,class,controls,.net,Class,Controls,我有一个现有的.NET应用程序,已经创建了大量控件 现在,我有了一个新的自定义控件类,用于-say-buttons(继承自“Button”),它具有额外的属性、方法等。 编译良好,并显示在我的工具栏中 我如何告诉VS我想用新控件替换现有控件 我的意思是,如果我打开设计器代码并手动更改控件的类型,VS会非常不高兴,并且设计会被一条令人讨厌的错误消息破坏 有没有一种方法可以在不破坏VS中的设计的情况下更改设计器生成的代码 或者除了手动删除每个控件并创建一个新控件之外,还有其他方法吗?这将是一个真正的

我有一个现有的.NET应用程序,已经创建了大量控件

现在,我有了一个新的自定义控件类,用于-say-buttons(继承自“Button”),它具有额外的属性、方法等。 编译良好,并显示在我的工具栏中

我如何告诉VS我想用新控件替换现有控件

我的意思是,如果我打开设计器代码并手动更改控件的类型,VS会非常不高兴,并且设计会被一条令人讨厌的错误消息破坏

有没有一种方法可以在不破坏VS中的设计的情况下更改设计器生成的代码

或者除了手动删除每个控件并创建一个新控件之外,还有其他方法吗?这将是一个真正的麻烦,因为当我删除控件时,表单代码中的所有控件处理程序都将被删除。比如:

处理myControl。单击。。。处理myControl.MouseHover。。。等等


欢迎给小费

您可以在VS中进行搜索并替换为“当前项目”范围。确保选中了“搜索隐藏文本”框(这将包括设计器生成的代码)。然后尝试编译项目,如果有任何错误(例如缺少属性),可以用同样的方法更正这些错误

完成以下步骤

备份

转到解决方案资源管理器窗口(Ctrl-Alt L是快捷方式),然后单击“显示所有文件”按钮。 选择要进行控件替换的窗体。 Clic上的小三角形显示“designer.vb”文件

打开它

搜索要替换的控件实例。 检查是否出现以下情况:

Me.ControlToBeReplaced = New System.Windows.Forms.TypeOfControlToReplace()
替换你对控制的定义。 每次发生以下情况时,都要执行相同的操作:

Friend WithEvents ControlToBeReplaced As System.Windows.Forms.TypeOfControlToReplace

构建您的解决方案

严重错误消息说什么?严重错误有点像VS“蓝屏”,告诉您由于formx.designer.vb中的一些错误,formx无法显示,因为自动生成的代码已被篡改,它不应该显示(不可编辑。例如,假设设计器中有一个标签:Dim CityLabel As System.Windows.Forms.label,我将其替换为Dim CityLabel As myProject.SpecialLabel。然后出现了错误。请注意,我还将设计器代码的Friend withEvent部分替换为使用我自己的类声明标签。你真的认为我没有理解吗完成了吗?请再次阅读问题…对我来说很有效。请注意最后一步(构建解决方案)很重要。+1