如何在没有表单的情况下使用Visual Studio设计器

时间:2015-02-22 21:22:06

标签: c# winforms visual-studio

我正在使用Visual Studio创建Windows窗体项目。

我的项目的解决方案资源管理器中没有Form类 - 我可以动态构建所有表单。所以我没有机会在Visual Studio或工具箱中打开Designer。

但我想创建一个ContextMenuStrip并在Designer中编辑它。我通常通过将ContextMenuStrip从ToolBox拖到Designer上来完成此操作。但是,我没有任何方法(我可以告诉)在没有首先创建表单或用户控件的情况下打开Designer。

如何在设计器中编辑ContextMenuStrip而不先将其与表单或用户控件相关联?

要清楚 - 我知道如何在代码中动态生成ContextMenuStrip。那不是我想要的。我想使用Designer来创建和编辑ContextMenuStrip,而不必首先将ContextMenuStrip与我将不会包含在我的项目中的表单或用户控件相关联。

(Visual Studio 2013 Pro,如果重要的话)

3 个答案:

答案 0 :(得分:0)

我不相信这是可能的,而且我认为这在审查中并不合理。

Designer是一个帮助您构建表单和用户控件的工具。真的是这样的。它可以节省您编写代码以手动创建和绘制控件。它提供了快捷方式和基本自动代码生成的精美图形视图。

您尝试创建的内容既不是新的UserControl类型,也不是新的Form类型 - 其中任何一种都可以在Designer中创建。这是一个预先添加了某些东西的菜单条。这不能孤立存在。它需要转换为创建成员并将成员添加到具体ContextMenuStrip对象的代码。该对象必须住在某个类(FormUserControl)。我不知道它本身是如何存在的。

答案 1 :(得分:0)

相同的问题...新的解决方案...

  1. 创建一个UserControl(例如UC1)
  2. 将ContextMenu作为CC1添加到UC1并在那里进行设计/编辑
  3. 将UserControl添加到您的项目中(或通过代码创建)
  4. 有关您现在“非常可用”的ContextMenu,请参考UC1.CC1

答案 2 :(得分:0)

您可以将ContextMenuStrip添加到窗体中,然后使用代码修改窗体,以便使用单例类型属性对其进行访问:

public partial class frmContextMenuHost : Form
{

    private frmContextMenuHost()
    {
        InitializeComponent();
    }

    private static frmContextMenuHost _frmContextMenu = null;

    public static ContextMenuStrip GetContextMenu
    {
        get
        {
            if (_frmContextMenu == null)
            {
                _frmContextMenu = new frmContextMenuHost();
            }
            return _frmContextMenu.contextMenuStrip1;
        }
    }

}

您打算如何为ContextMenuStrip使用事件?