Visual Studio 设计时属性 - 表单列表下拉菜单

2023-12-14

[编辑] 需要明确的是,我知道如何通过反射获取表单列表。我更关心设计时属性网格。

我有一个具有 Form 类型公共属性的用户控件。
我希望能够在设计时从下拉列表中选择一个表单。
我想从一组命名空间填充表单下拉列表:UI.Foo.Forms

如果您拥有 Control 的公共财产,这将起作用。在设计时,该属性将自动填充表单上所有控件的下拉列表,供您选择。我只想用命名空间中的所有表单填充它。

我该怎么做呢?我希望我说得足够清楚,以免造成混乱。如果可能的话,我正在寻找一些代码示例。当我还有其他截止日期要满足时,我会尽量避免在这方面花费太多时间。

提前感谢您的帮助。


您可以通过反射轻松获取类:

var formNames = this.GetType().Assembly.GetTypes().Where(x => x.Namespace == "UI.Foo.Forms").Select(x => x.Name);

假设您从与表单相同的程序集中的代码调用此函数,您将获得“UI.Foo.Forms”命名空间中的所有类型的名称。然后,您可以在下拉列表中呈现它,并最终再次实例化用户通过反射选择的任何一个:

Activator.CreateInstance(this.GetType("UI.Form.Forms.FormClassName"));

[编辑] 为设计时内容添加代码:

在您的控件上,您可以创建一个 Form 属性,如下所示:

[Browsable(true)]
[Editor(typeof(TestDesignProperty), typeof(UITypeEditor))]
[DefaultValue(null)]
public Type FormType { get; set; }

它引用必须定义的编辑器类型。该代码非常不言自明,只需进行最少的调整,您就可以让它准确地生成您想要的内容。

public class TestDesignProperty : UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.DropDown;
    }

    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        var edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

        ListBox lb = new ListBox();
        foreach(var type in this.GetType().Assembly.GetTypes())
        {
            lb.Items.Add(type);
        }

        if (value != null)
        {
            lb.SelectedItem = value;
        }

        edSvc.DropDownControl(lb);

        value = (Type)lb.SelectedItem;

        return value;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 设计时属性 - 表单列表下拉菜单 的相关文章

  • 使用内部 setter 进行属性注入

    我正在修改一个现有应用程序以使用 Autofac 属性注入 似乎无论我使用哪种方法向属性注册类型 属性始终为 null 除非它们具有公共设置器 对于其他 IoC 容器 例如 Structuremap 可以使用 setter 内部范围并使其可
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 如果我使用客户端计算机上未安装的字体,会发生什么情况?

    有人可以告诉我 如果我在 WinForms 应用程序中使用目标计算机上不可用的字体 会发生什么情况 它是否使用同一系列的字体 只是 Sans Serif 还是其他字体 您的应用程序将回退到 Segoe UI Tahoma 然后是 MS Sa
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • MySQL JOIN 返回 NULL 字段

    我正在尝试运行下面的脚本 但总是获得名称字段的 NULL 值 SELECT u name AS user name s name AS school name FROM fwg files AS f LEFT JOIN users AS u
  • 高斯模糊滤镜会导致受影响图像上方的文本被隐藏

    我在尝试模糊图像时遇到问题CSS在我的网页上 受影响图像上方呈现的任何元素都将在该过程期间和之后隐藏 我该如何解决这个问题 有关问题本身的更多信息 我发布了一个片段 其中包含一个具有该确切问题的示例 placeholder display
  • 如何在 Objective C 中每 3 位数字添加逗号?

    如果我有一个号码int aNum 2000000如何格式化它以便我可以将其显示为 NSString 2 000 000 Use NSNumberFormatter 具体来说 NSNumberFormatter formatter NSNum
  • Android Retrofit 返回状态 500 内部服务器错误

    我正在使用像这样的Retrofit来获取所有书籍并删除所有书籍 GET books BookListResponse getAllBooks DELETE clean Response deleteAllBooks 但返回了错误状态 500
  • Excel VBA 创建 json 有效负载

    我正在使用 Excel VBA 并调用外部 REST API 调用需要 json 格式的有效负载 我在创建 json 格式时遇到问题 customerContext identifiers apiName email value email
  • Docker 绑定安装 - 在浏览器上看不到更改

    我在 Windows Home 上使用 docker toolbox 我能够运行 jekyll serve Web 服务器映像来查看浏览器上的默认页面 但是当我尝试在 VS Code 上编辑文件时 刷新浏览器后看不到更改 知道为什么刷新后看
  • 设置 WPF 用户控件图标时无法识别 URI 前缀错误

    我正在创建一个 WPF 窗口并在其中加载用户控件 如下所示 Uri uri new Uri Views ApplicationInfo xaml UriKind RelativeOrAbsolute UserControl versionI
  • 通过搜索嵌套对象属性来过滤对象数组

    我有一个对象数组 我想通过将嵌套属性与搜索词进行比较来过滤它们 例如 var array category Business users name Sally tags tag accounting tag marketing name B
  • R 闪亮仪表板中标题中的主页按钮

    我试图在我的 Shiny 应用程序的标题中添加一个主页按钮 以便每当有人从任何选项卡单击它时 它都会重定向到第一页 目前 我在每个选项卡中使用一个actionButton 和observeEvent 返回第一页 我无法在 Shiny 应用程
  • 对同一行的并发更新

    我试图弄清楚如果我同时从不同的客户端发出以下两个查询 MySQL InnoDB 中应该发生什么 UPDATE tbl SET a a 1 WHERE id 123 UPDATE tbl SET b b 1 WHERE id 123 如果查询
  • Directx 的变化

    我的 win8 和 directx 库有问题 我有 directx jun 2010 我添加了它的 d3dx11 lib 和 h 文件 但它不起作用并说找不到库 我发现下面的 hte 链接说您可以使用 win8 sdk 而不是 direct
  • Windows 上的 Qt 5.1.0 使用 minGW 4.8 需要很长时间来调试

    我已从 qt project 下载页面下载并安装了适用于 Windows 32 位 MinGW 4 8 的 Qt 5 1 0 我已经运行了安装程序 并且能够使用这些库和 minGW 4 8 32 位工具链来编译和运行应用程序 但是 我有一个
  • 为什么文件被放置在“C:\Users\<用户名>AppData\Local\VirtualStore\Program Files(x86)”中?

    我最近更新了我的视觉基本6 0应用程序 现在包含一个 exe manifest 文件以防止UAC虚拟化 应用此更新后 一些用户找不到他们的数据文件 AccessMDB 文件 经过系统搜索后 他们最终在C Users
  • 使用指针 C++ 实现双向链表

    我目前正在自学 C 并尝试使用部分完成的指针在 C 中实现双向链表 我知道代码当前无法处理悬空节点或输出错误 接下来我将实现这两 者 但是 代码至少应该能够构造一个列表对象并向其中添加元素 目前 当我尝试调用列表的构造函数时 出现错误 该错
  • 更新slot vuejs中的数据

    你好 我在 laravel 项目中使用 vuejs 这是我的 vuejs 代码 Vue component search and select template div div
  • 即使导出后,process.env 变量也未定义

    我正在编写一个 Node js Express 应用程序 并希望使用环境变量来设置服务器应运行的端口 但是 我似乎无法得到process env PORT阅读我的PORT环境变量 我已经使用定义了 PORT 环境变量export像这样 ex
  • 如何使用 Maven 插件从带有注释的现有实体生成 DDL?

    我有 Maven 项目 我想从现有实体生成 DDL 我怎样才能做到这一点 有没有可以生成 DDL 的 Maven 插件 我正在使用JPA 打开jpa openjpa maven plugin 插件提供了一个目标sql 使用此目标 可以从现有
  • 禁用 Windows 窗体上的所有事件

    有没有办法暂时禁用 Windows 窗体上的所有事件 我遇到的情况是 辅助线程上的处理被主线程上的事件破坏 主线程事件正在修改数据绑定到辅助线程使用的变量的控件的内容 寻找一种方法来 锁定 表单 直到辅助线程上的处理完成 显然 将处理移至主
  • 非规格化向量

    如何对已标准化的向量进行反标准化以获得标准化之前的原始值 例如 vec 0 5 1 0 0 0 vec length sqrt vec x 2 vec y 2 vec z 2 vec normalized vec x vec length
  • Visual Studio 设计时属性 - 表单列表下拉菜单

    编辑 需要明确的是 我知道如何通过反射获取表单列表 我更关心设计时属性网格 我有一个具有 Form 类型公共属性的用户控件 我希望能够在设计时从下拉列表中选择一个表单 我想从一组命名空间填充表单下拉列表 UI Foo Forms 如果您拥有