简介

KryptonComboBox 是增强型下拉框控件,替代标准 System.Windows.Forms.ComboBox。它跟随 Krypton 主题渲染,下拉列表项支持主题高亮,支持数据绑定、可编辑 / 只读下拉模式,以及水印提示。常用于选择分类、状态、语言等枚举型字段。

KryptonComboBox 示例截图
KryptonComboBox 及其主题化下拉列表

常用属性

属性类型说明
Items集合下拉列表项集合
SelectedIndexint选中项索引(-1 表示未选)
SelectedItemobject选中的项对象
SelectedValueobject选中项的值(配合 ValueMember)
Textstring编辑区文字
DropDownStyleComboBoxStyle下拉样式(DropDown / DropDownList / Simple)
DataSourceobject数据源(DataTable / List 等)
DisplayMemberstring显示的字段名
ValueMemberstring值的字段名
MaxDropDownItemsint下拉列表最多显示的行数
StateCommon.ComboBox.Content.FontFont文字字体
Hintstring水印提示文字

快速上手

基本用法(静态选项)

using Krypton.Toolkit;

// 创建下拉框
var cmbStatus = new KryptonComboBox();
cmbStatus.Items.AddRange(new object[] { "待处理", "进行中", "已完成", "已取消" });
cmbStatus.SelectedIndex = 0;
cmbStatus.DropDownStyle = ComboBoxStyle.DropDownList;
cmbStatus.Location = new Point(20, 20);
cmbStatus.Size = new Size(150, 25);

// 选择变化事件
cmbStatus.SelectedIndexChanged += (s, e) =>
{
    var status = cmbStatus.SelectedItem.ToString();
    FilterByStatus(status);
};

this.Controls.Add(cmbStatus);

数据绑定

// 绑定 DataTable
var cmbCategory = new KryptonComboBox();
cmbCategory.DataSource = categoryTable;
cmbCategory.DisplayMember = "CategoryName";
cmbCategory.ValueMember = "CategoryId";
cmbCategory.SelectedIndex = -1;  // 默认不选

// 获取选中的值
cmbCategory.SelectedValueChanged += (s, e) =>
{
    if (cmbCategory.SelectedValue != null)
    {
        int categoryId = Convert.ToInt32(cmbCategory.SelectedValue);
        LoadProducts(categoryId);
    }
};

进阶用法

绑定对象列表

// 绑定自定义对象
public class LanguageItem
{
    public string Name { get; set; }
    public string Code { get; set; }
    public override string ToString() => Name;
}

var cmbLang = new KryptonComboBox();
cmbLang.DataSource = new List
{
    new LanguageItem { Name = "简体中文", Code = "zh-CN" },
    new LanguageItem { Name = "English", Code = "en-US" },
    new LanguageItem { Name = "日本語", Code = "ja-JP" }
};
cmbLang.DisplayMember = "Name";
cmbLang.ValueMember = "Code";

// 获取语言代码
string code = ((LanguageItem)cmbLang.SelectedItem).Code;

可编辑下拉框(自动补全)

// 允许用户输入并自动补全
var cmbCity = new KryptonComboBox();
cmbCity.DropDownStyle = ComboBoxStyle.DropDown;  // 可编辑
cmbCity.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
cmbCity.AutoCompleteSource = AutoCompleteSource.ListItems;
cmbCity.Hint = "输入或选择城市";
cmbCity.Items.AddRange(new object[]
{
    "北京", "上海", "广州", "深圳", "杭州", "成都"
});
提示:设置 DropDownStyle = DropDownList 可禁止用户输入,只能从列表选择。数据绑定时建议在填充数据前先设置 DisplayMemberValueMember,避免触发多次 SelectedIndexChanged

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonComboBox Examples/

包含:静态选项、数据绑定、可编辑补全、对象列表绑定演示。

相关控件