【问题标题】:How to add designer support to Winforms extension control?如何将设计器支持添加到 Winforms 扩展控件?
【发布时间】:2022-01-18 18:43:56
【问题描述】:

我正在使用 C# 和 .Net 5.0 框架创建一个 Windows 窗体应用程序,并且想创建一个按钮控件的扩展类,我可以将其用作菜单控件,也就是说,单击其中一个按钮将打开相应的页面(“页面”是我为 UserControls 实现的自定义界面,而不是让我的应用程序的每个部分都成为单独的表单)。

但是,在创建了扩展 Button 类的 MenuBtn 类之后,尝试将 MenuBtn 从我的 VS 2019 工具箱拖动到设计器视图时出现很长的错误。 似乎我需要为我的 MenuBtn 类添加某种设计时支持,但我不知道该怎么做。我知道我可以以编程方式使用该类,但我想成为能够在设计器中使用控件。

我知道我可以在按钮周围创建一个 UserControl 包装器并改用它,但是因为按钮已经具有我想要的几乎所有功能,所以这样做似乎是糟糕的设计。此外,我将其创建为一种框架,以便我将来制作的应用程序可以使用这些菜单按钮。这就是为什么我不只是为打开特定页面的每个按钮创建自定义 OnClick 事件处理程序。

下面是我的 MenuBtn 类的 sn-p,它现在非常简单,以及我在尝试将 MenuBtn 从工具箱放入设计窗口时收到的错误图片的链接(我无法复制和从错误窗口粘贴,这是一个很长的错误)。从代码 sn-p 中可以看出,我尝试在类中添加设计器标签。

    [Designer(typeof(ControlDesigner))]
    public partial class MenuBtn : Button
    {
        public MenuBtn()
        {
            InitializeComponent();
        }
    }

设计器错误消息: link

【问题讨论】:

  • 也许这可以帮助你。 stackoverflow.com/questions/4186953/…
  • 我之前确实遇到过这个问题,问题是我不需要任何自定义设计器功能,标准按钮功能很好,我只是无法从我的工具箱中放置它。我确实尝试了该解决方案,但没有任何区别

标签: c# visual-studio winforms user-interface


【解决方案1】:

我不确定到底是什么问题,我仍然有点困惑,但我能够通过清理和重建解决方案的某种组合来解决问题,并将构建目标 CPU 从 Any cpu 更改为x86,然后再返回。

我想问题不是我需要添加某种设计器支持,而是工具箱/设计器从我的项目的 dll 中读取的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多