当前位置: 首页 > news >正文

Winform控件:Combobox

1.1 快速上手

  1. 拖一个 ComboBox 到窗体
  2. 填数据:
comboBox1.Items.AddRange(new object[]{"北京","上海","广州","深圳"});
// 或绑定数据源
comboBox1.DataSource = list;        // 任何 IList/BindingList
comboBox1.DisplayMember = "Name";   // 对象属性
comboBox1.ValueMember   = "Id";     // 背后值
  1. 读取选中项:
var txt = comboBox1.Text;                 // 显示文本
var val = comboBox1.SelectedValue;        // 背后值(绑定才有效)
var idx = comboBox1.SelectedIndex;        // -1 表示没选

1.2 核心属性速查表

属性

典型值

作用

DropDownStyle

DropDownList

决定用户能否输入文本(见下一节)

AutoCompleteSource

CustomSource

开启自动完成

AutoCompleteMode

SuggestAppend

自动完成模式

MaxDropDownItems

8

下拉最大可见行数

IntegralHeight

false

允许部分行高(自绘时有用)

Sorted

true

对 Items 自动排序(绑定数据源时无效)

1.3 DropDownStyle 三态对比

枚举值

用户能否输入

能否下拉

典型场景

DropDown

搜索框(带建议)

DropDownList

只允许选择(最常用)

Simple

像 ListBox 一直展开

1.4 事件大全(常用)

事件

触发时机

用途

SelectedIndexChanged

每次换项

联动界面、保存设置

TextChanged

输入文字时

搜索过滤、实时提示

DropDownClosed

下拉收起

延迟加载、清理资源

KeyDown

按键

自定义快捷键(如回车即提交)

示例:回车直接提交

private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{if (e.KeyCode == Keys.Enter)buttonOK.PerformClick();
}

1.5 自动完成(零代码)

设计器里设置:

AutoCompleteSource = CustomSource
AutoCompleteCustomSource.AddRange(new string[]{"北京","北京朝阳","北京海淀"})
AutoCompleteMode = SuggestAppend

运行即可像搜索引擎一样下拉提示。

1.6 绑定对象 + 取值

public class City
{public int Id { get; set; }public string Name { get; set; }
}// 窗体加载
var cities = new List<City>
{new City{Id=1, Name="北京"},new City{Id=2, Name="上海"}
};
comboBox1.DataSource = cities;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember   = "Id";// 读取
City selected = (City)comboBox1.SelectedItem;  // 强类型
int id = selected.Id;

1.7 自绘项(图标 + 颜色)

设置 DrawMode = OwnerDrawFixed,处理 DrawItem

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{if (e.Index < 0) return;string text = comboBox1.Items[e.Index].ToString();Color  backColor = (text == "上海") ? Color.LightPink : Color.White;e.Graphics.FillRectangle(new SolidBrush(backColor), e.Bounds);e.Graphics.DrawString(text, e.Font, Brushes.Black, e.Bounds.Left + 2, e.Bounds.Top + 2);e.DrawFocusRectangle();
}

效果:每项背景色不同,甚至加图标(用 e.Graphics.DrawImage)。

1.8 异步加载(大数据源)

await Task.Run(() =>
{var hugeList = GetDataFromDB();   // 耗时this.Invoke(() =>{comboBox1.DataSource = hugeList;comboBox1.DisplayMember = "Name";});
});

避免 UI 卡顿。

1.9 常见坑速查

现象

原因

解决

下拉空白

IntegralHeight=false + 行高<1

IntegralHeight=true 或调高 ItemHeight

SelectedIndex=-1

清空后未复位

手动赋 SelectedIndex = -1

绑定后 SelectedValue 为 null

未设 ValueMember

指定 ValueMember = "Id"

输入文字不触发事件

DropDownStyle=DropDownList

改为 DropDown 即可输入

//向集合追加单个成员
comboBox1.Items.Add("正弦信号");
comboBox1.Items.Add("脉冲信号");
//向集合追加数组成员
comboBox1.Items.AddRange(new string[] { "设置", "参数", "OK" });
//选择哪一个
comboBox1.SelectedIndex = 0;
//设定字体
comboBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10,FontStyle.Bold);// 读取当前选择的项名称
string str3 = comboBox1.SelectedText;  // 获取当前选择的对象
string str2 = comboBox1.SelectedItem.ToString();// Text 获取的为控件显示的内容
string str = comboBox1.Text;
http://www.dtcms.com/a/542131.html

相关文章:

  • 义乌水务建设集团官方网站佛山市网站建设分站多少钱
  • iOS 应用加固软件选型与落地 多工具组合构建可审计的 IPA 混淆与加固流水线
  • 做网站手机端不做PC可以吗怎么做弹幕小视频网站
  • 网站移动端怎么做的免费的高清视频素材网站
  • 类变量和类方法main方法代码块单例设计模式final关键字
  • 网站的打开速度汽车网站建设报价
  • 建设asp网站视频教程锡林郭勒盟工程建设造管理网站
  • GXDE 内核管理器 1.0.1——修复bug、支持loong64
  • Marin说PCB之以太网两腔兼容四腔体时焊盘钢网间距过近问题分析
  • SPI通信 模式0更常用的原因
  • 认识Linux软件包与vim编辑器的初步了解
  • 如何创建网站的二维码网页版传奇工作室
  • 做不做生意都要知道的网站网页设计与网站建设区别
  • 基于元胞自动机的遥感城市扩张模拟python
  • 早期电商平台有哪些潍坊seo
  • 西安电子商务网站开发网站开发毕设开题报告
  • 平邑建设银行网站vue.js做的网站
  • 智能开关网站开发具体流程临夏市建设局网站
  • ECharts 3D柱状图与折线图混合组件开发实战:BarLine3D.vue 深度解析
  • 网站权重如何速度增加性男女做视频网站
  • 团购网站如何优化php网站开发视频
  • 营销网站好不好艺术家网站源码
  • 做58同城的网站要多少钱专业旅游培训网站建设
  • 什么网站做任务能挣免费设计房屋效果图软件有哪些
  • 告别手动误差!程控定量封口机如何实现微生物检测的“精准自动化”
  • 财务报表自动化分析怎么实现?
  • 嘉兴微网站建设北京十大教育培训机构排名
  • 踩坑记录:PDManer 导出 Oracle DDL 默认值成 ‘NULL‘ 字符串的排查与解决
  • 做渠道该从哪些网站入手网站建设顶层设计
  • 给手机开发网站php网站源码怎么在本地电脑调式