重写ComboBox的OnkeyUp方法

本文介绍了一个自定义ComboBox组件的方法,通过重写OnKeyUp方法实现自动匹配下拉项中的值。当用户输入部分文本时,该ComboBox能自动选择与输入文本相匹配的完整选项。
using System;
using System.Collections.Generic;
using System.Text;

namespace winform1
{
    public class OurComBox : System.Windows.Forms.ComboBox
    {
        //==============overwrite ComboBox OnkeyUp method
        protected override void OnKeyUp(System.Windows.Forms.KeyEventArgs e)
        {
            foreach (object item in this.Items)
            {
                string[] strs = item.ToString().Split("-".ToCharArray());//利用空格来分格字符串
                if (strs[0].Trim().Equals(this.Text))//如果输入的值等于前面的编号 
                {
                    this.SelectedItem = item;
                    this.SelectAll();
                }
            }
            base.OnKeyUp(e);
        }
        //=================
    }
}
PS:此方法是本人看到一个视频教程上的。以前听过好多的如何自定义控件,如何重写但都觉得没有见到实际效果,
今天总算是见到了。。所以转出来与大家一起分享。。。。此方法是自动匹配下拉项中的值
 
### Qt中继承和重写ComboBox 为了在Qt中创建具有自定义行为或外观的`QComboBox`,可以考虑通过继承`QComboBox`来扩展其功能。当需要修改控件的行为时,通常会覆盖虚函数或者事件处理方法;而要改变视觉效果,则可以通过设置样式表或是重新绘制部件。 对于想要调整组件内部逻辑的情况,比如更改下拉列表显示方式、响应不同的键盘输入等操作,应该关注于覆写特定的方法如`showPopup()`[^1] 或者 `hidePopup()` 来控制弹出窗口的动作。如果目标是在用户交互过程中加入额外的功能,那么可能还需要拦截并处理鼠标点击或其他类型的事件消息。 若是追求独特的界面设计而不只是简单的颜色变化,除了利用Qt Style Sheets之外,还可以进一步深入到绘画机制里去——即子类化`QComboBox`之后,在其中实现自己的`paintEvent(QPaintEvent*)` 函数来进行个性化渲染[^2] 。这允许完全掌控绘图过程,从而达到更精细的设计需求。 另外一种常见的做法是替换默认使用的视图模型(model),这样就可以灵活地管理数据源以及定制展示形式。例如,通过指定一个自定义的`QStringListModel`实例给组合框作为新的项目存储容器,并相应地调整布局结构以适应特殊的应用场景要求[^3] 。 ```cpp class CustomComboBox : public QComboBox { Q_OBJECT protected: void paintEvent(QPaintEvent *event) override; }; void CustomComboBox::paintEvent(QPaintEvent *) { QPainter painter(this); // 自定义绘制代码... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值