C#自定义控件之下拉列表框

  1. 设置 DropDownStyle 为 DropDownList


     
  2. 将 DrawMode 改为 OwnerDrawFixed


     
  3. 添加 DrawItem 事件
  4.  样式就变为下面这样,但是只能在列表中选择,而不能手动输入

    public class ComBox : ComboBox
    {
        public ComBox()
        {
            this.DropDownStyle = ComboBoxStyle.DropDownList;
            this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
            this.DrawItem += new DrawItemEventHandler(ComBox_DrawItem);
        }

        void ComBox_DrawItem(object sender, DrawItemEventArgs e)
        {
            ComboBox cb = sender as ComboBox;
            if (e.Index < 0)
            {
                return;
            }
            e.DrawBackground();
            e.DrawFocusRectangle();
            e.Graphics.DrawString(cb.GetItemText(cb.Items[e.Index]).ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
        }

    }
List<object> listCmbInfo = new List<object>();
listCmbInfo.Add(new { ID = 100, Name = "100" });
listCmbInfo.Add(new { ID = 120, Name = "120" });
listCmbInfo.Add(new { ID = 150, Name = "150" });
this.cmb1.DisplayMember = "Name";
this.cmb1.ValueMember = "ID";
this.cmb1.DataSource = listCmbInfo;

//这样显示的是 Name 属性,取值时可以取 ID 属性 (this.cmb1.SelectedValue)

 

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C# 中的自定义控件特性可以通过使用 .NET Framework 中的 `System.ComponentModel` 命名空间来实现。这些特性可以为控件提供额外的元数据,使其在设计时和运行时具有更丰富的功能和行为。 以下是一些常见的自定义控件特性: 1. `BrowsableAttribute`: 指示控件的属性是否应该在属性窗格中显示。如果将其设置为 `false`,则在设计时不会显示该属性,默认值为 `true`。 2. `CategoryAttribute`: 定义属性在属性窗格中所属的类别。可以根据需要将属性分组,并使其更易于组织和查找。 3. `DescriptionAttribute`: 提供对属性或控件的简短描述。这对于在属性窗格中显示有关属性的提示信息很有用。 4. `DefaultValueAttribute`: 指定属性的默认值。当用户在设计时创建一个新实例或重置属性时,将使用该值。 5. `EditorAttribute`: 指定与属性关联的自定义编辑器。自定义编辑器可以提供更复杂的交互和编辑体验,例如下拉列表或日期选择器。 6. `BindableAttribute`: 标识是否可以将属性绑定到数据源。如果设置为 `true`,则可以通过数据绑定机制将该属性与其他数据进行关联。 这些特性可以通过在自定义控件的属性上应用相应的特性来实现。例如: ```csharp using System.ComponentModel; public class MyCustomControl : Control { [Browsable(true)] [Category("MyCategory")] [Description("This is my custom property.")] [DefaultValue(true)] public bool MyProperty { get; set; } [Browsable(true)] [Category("MyCategory")] [Description("This is my custom event.")] public event EventHandler MyEvent; // ... } ``` 通过使用这些自定义控件特性,可以提供更好的设计时体验,并使控件更易于使用和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bridge_go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值