Component One

本文评测了ComponentOne Studio Enterprise 2007版本,指出该构件功能全面、容量大,能够满足大多数应用需求。尽管在界面美观和特性方面并非最佳选择,但对于使用Visual Studio 2005及.NET Framework 2.0的开发者来说仍是一个值得考虑的选项。
ComponentOne(现为 GrapeCity Developer Solutions 的一部分)是一套高性能、轻量级的 .NET UI 控件库,支持 WinForms、WPF、MVC、Blazor 等多个平台。其 `C1ComboBox` 控件功能强大,特别适合用于实现 **输入即搜索**、**智能筛选下拉项** 等现代 UI 需求。 --- ### ✅ 使用 ComponentOne 实现“输入文本自动搜索”功能 下面是一个完整的 C# 示例,展示如何使用 **C1.Win.C1Input.C1ComboBox** 实现用户在输入时自动筛选下拉列表中的项目。 > 🔧 前提:已安装 ComponentOne for WinForms 并添加引用 > 可通过 [GrapeCity 官网](https://www.grapecity.com/componentone) 下载试用版或购买授权。 --- ### ✅ 完整代码示例:C1ComboBox 输入自动搜索 ```csharp using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using C1.Win.C1Input; public class FormWithC1Combo : Form { private C1ComboBox c1Combo; private List<string> originalItems; public FormWithC1Combo() { InitializeComponent(); } private void InitializeComponent() { this.Text = "ComponentOne C1ComboBox 自动搜索示例"; this.Size = new Size(300, 200); this.StartPosition = FormStartPosition.CenterScreen; // 初始化数据源 originalItems = new List<string> { "北京", "上海", "广州", "深圳", "杭州", "南京", "南昌", "宁波", "青岛", "厦门", "成都", "重庆", "西安", "长沙", "武汉", "福州", "合肥", "海口" }; // 创建 C1ComboBox c1Combo = new C1ComboBox(); c1Combo.Location = new Point(50, 50); c1Combo.Width = 200; c1Combo.Font = new Font("Segoe UI", 9.75f); c1Combo.DropDownStyle = C1ComboBoxDropDownStyle.DropDown; // 允许编辑 c1Combo.AutoCompleteMode = AutoCompleteMode.SuggestAppend; // 🔑 关键设置:启用包含匹配模式(输入任意字符都可触发过滤) c1Combo.AutoSearch = AutoSearchMode.Contains; // 绑定原始数据 foreach (var item in originalItems) { c1Combo.Items.Add(item); } // 可选:监听选择事件 c1Combo.SelectedValueChanged += (s, e) => { if (c1Combo.SelectedItem != null) MessageBox.Show("你选择了: " + c1Combo.SelectedItem.ToString()); }; this.Controls.Add(c1Combo); // 可选:添加说明标签 Label label = new Label(); label.Text = "输入城市名进行搜索..."; label.Location = new Point(50, 20); label.AutoSize = true; this.Controls.Add(label); } } ``` --- ### 📌 核心属性说明 | 属性 | 说明 | |------|------| | `DropDownStyle = DropDown` | 允许用户输入和下拉选择 | | `AutoCompleteMode = SuggestAppend` | 显示建议并自动补全 | | `AutoSearch = Contains` | 支持“包含”匹配(如输入“南” → 匹配“南京”、“南昌”) | | `AutoSearchTimeout` | 设置搜索延迟时间(毫秒),避免频繁触发 | | `Filter` | 可设置自定义过滤器(高级用法) | --- ### ✅ 进阶:启用拼音首字母搜索(如输入 "bj" 匹配 "北京") ComponentOne 默认不支持拼音搜索,但你可以通过 **自定义过滤逻辑** 实现: #### 示例:扩展 C1ComboBox 支持拼音搜索(简化版) ```csharp // 添加 NuGet 包:Pinyin4Net 或 ChinaseConverter // 此处使用一个简易映射模拟 private Dictionary<string, string> pinyinMap = new Dictionary<string, string> { { "北京", "beijing" }, { "上海", "shanghai" }, { "广州", "guangzhou" }, { "深圳", "shenzhen" }, { "杭州", "hangzhou" }, { "南京", "nanjing" }, { "南昌", "nanchang" }, { "宁波", "ningbo" } }; private void c1Combo_TextChanged(object sender, EventArgs e) { string query = c1Combo.Text.ToLower(); if (string.IsNullOrWhiteSpace(query)) return; // 自定义过滤:检查中文或拼音匹配 var matched = new List<string>(); foreach (var item in originalItems) { if (item.Contains(query, StringComparison.OrdinalIgnoreCase)) { matched.Add(item); continue; } // 检查拼音是否包含查询词 if (pinyinMap.TryGetValue(item, out string pinyin)) { if (pinyin.StartsWith(query) || GetPinyinInitials(pinyin).StartsWith(query)) { matched.Add(item); } } } // 动态更新下拉项 c1Combo.Items.Clear(); foreach (var m in matched) c1Combo.Items.Add(m); // 保持输入框文本不变 c1Combo.Text = query; c1Combo.SelectionStart = query.Length; } // 获取拼音首字母缩写(如 beijing → bj) private string GetPinyinInitials(string pinyin) { var parts = pinyin.Split(' '); char[] initials = Array.ConvertAll(parts, s => s[0]); return new string(initials); } ``` > ⚠️ 注意:需将上述逻辑结合 `TextChanged` 和 `LostFocus` 事件管理焦点与还原原始项。 --- ### 💡 优势总结 | 特性 | 说明 | |------|------| | 轻量高效 | 相比 DevExpress 更小的体积 | | 易于集成 | 提供 Visual Studio 设计器支持 | | 高性能 | 支持虚拟化加载万级数据 | | 多平台 | 支持 WinForms / WPF / Blazor 等 | | 文档完善 | 官方文档详细,示例丰富 | --- ### 🔗 官方资源 - 官网:[https://www.grapecity.com/componentone](https://www.grapecity.com/componentone) - 下载地址:[https://www.grapecity.com/componentone/download](https://www.grapecity.com/componentone/download) - 文档中心:[https://help.grapecity.com/](https://help.grapecity.com/) --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值