【问题标题】:replace existing control with custom class .NET Winforms用自定义类 .NET Winforms 替换现有控件
【发布时间】:2011-02-16 12:59:06
【问题描述】:

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

现在我有一个新的自定义控件类——比如说——按钮(继承自“Button”),具有额外的属性、方法等。 编译正常,它显示在我的工具栏中。

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

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

有没有办法在不破坏 VS 设计的情况下更改设计器生成的代码?

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

处理 myControl.Click ... 处理 myControl.MouseHover ... 等等。

欢迎任何提示!

【问题讨论】:

  • 讨厌的错误信息说什么?
  • 这个讨厌的错误有点像VS“蓝屏”,告诉formx由于formx.designer.vb中的一些错误而无法显示,因为自动生成的代码已被篡改并且它不应该被编辑。例如,假设设计器中有一个标签:Dim CityLabel As System.Windows.Forms.Label 我将其替换为 DIm cityLabel as myProject.SpecialLabel。然后出现错误。请请注意,我还替换了设计器代码的 Friend withEvent 部分,以用我自己的类声明标签..

标签: .net class controls


【解决方案1】:

下面是完整的过程。

进行备份!

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

打开它。

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

Me.ControlToBeReplaced = New System.Windows.Forms.TypeOfControlToReplace()

替换您对控制的定义。 对每次出现的情况执行相同的操作:

Friend WithEvents ControlToBeReplaced As System.Windows.Forms.TypeOfControlToReplace

构建您的解决方案

【讨论】:

  • 你真的认为我还没有这样做吗?请再次阅读问题...
  • 为我工作。请注意,最后一步(构建您的解决方案)很重要。 +1
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多