Designer属性 c#

本文介绍如何将UserControl配置为设计时控件容器,包括使用DesignerAttribute类更改默认设计器,以便可以在设计视图中向UserControl添加子控件。

如何将 UserControl 对象用作设计时控件容器。可能会有这样的情况:您想将一个控件拖到 UserControl 中。为做到这一点, UserControl 必须用作控件容器。


默认情况下,UserControl 对象只有在您创建它时才可以用作控件容器。在将 UserControl 放在 Windows 窗体上之后,为让 UserControl 承载构成控件,您必须更改 UserControl 的默认设计器。如要为一个组件实现设计时服务,请使用 System.ComponentModel 名称空间的 DesignerAttribute 类。DesignerAttribute 出现在类声明前面。通过传递 designerTypeNameDesignerAttribute 参数初始化 designerTypeName

designerTypeName 是提供设计时服务的设计器类型的完全合格的名称。传递 designerTypeName 参数的 System.Windows.Forms.Design.ParentControlDesignerSystem.Design 的组合。ParentControlDesigner 类扩展了 UserControl 的设计时行为。

designerBaseType 是设计器的基类的名称。用于设计时服务的类必须实现 IDesigner 接口。


如下所示将 System.ComponentModel.DesignerAttribute 属性应用到该控件:

  1. [Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] public class UserControl1 :System.Windows.Forms.UserControl {
    
          ...
    
    }

 

### C# 中 Resources.Designer 文件的用法 `Resources.Designer.cs` 是由 Visual Studio 自动生成的一个文件,用于存储资源(如字符串、图像和其他二进制数据)。它通过 `Properties.Resources` 类提供访问这些资源的方式。以下是关于该文件的一些重要知识点: #### 1. **作用** `Resources.Designer.cs` 的主要功能是定义一个静态类 `Resources`,其中包含了对所有嵌入到项目的资源的访问器方法。开发者可以通过这个类轻松地获取项目中的各种资源。 例如,在代码中可以直接调用如下方式来读取图片资源[^2]: ```csharp this.Fan_Image.Image = Properties.Resources.RED; ``` #### 2. **如何生成和更新** 当向项目中添加新的资源时,Visual Studio 自动更新 `Resources.resx` 和对应的 `Resources.Designer.cs` 文件。如果手动修改了 `.resx` 文件,则需要重新保存以触发 Designer 文件的同步更新[^3]。 #### 3. **常见问题及其解决方案** - **无法找到指定资源**: 如果尝试访问某个资源却抛出了异常或者返回 null 值,可能是因为资源名称拼写错误或者是未正确设置其构建操作 (Build Action) 属性为 "Embedded Resource"[^1]。 - **设计器不刷新**: 当发现更改后的 .resx 文件未能反映在 designer 文件里时,请关闭再打开该项目;有时还需要清理并重建整个解决方案才能解决问题。 - **跨平台兼容性问题**: 对于某些特定类型的多媒体文件(比如视频), 可能会出现不同操作系统间播放失败的情况, 这通常不是因为 resource system 导致的问题而是由于编码格式支持差异引起. #### 示例代码展示如何使用 Resources.Designer.cs 访问资源: 下面是一个简单的例子展示了怎样利用此机制加载一张位图作为窗体背景: ```csharp public partial class Form1 : Form { public Form1() { InitializeComponent(); // 使用 Resources 来设定窗体背景图为名为 'Background' 的资源. this.BackgroundImage = Properties.Resources.Background; } } ``` 上述代码片段假设存在一幅命名为 "Background" 的图形资源已经存在于当前工程下的 properties/resource 集合之中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值