C#:Control控件里的ComboBox在设计视图下焦点可以进入的解决办法

本文探讨了在C#中创建自定义控件时遇到的一个问题:ComboBox在设计视图下可以被直接选中并输入。通过分析,指出尽管这不是运行时问题,但在设计时可能影响专业性。解决方案是通过自定义设计器,阻止ComboBox在设计视图中获取焦点。文章提供了具体的代码示例,指导如何创建新的设计器类并将其应用到自定义控件上,从而修复此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇博客里说到,当我们编写一个控件直接继承于Control,并且里面Add了一个ComboBox的时候的问题。

今天继续接着这个说。


有的人可能会觉得奇怪,自定义控件不是直接新建一个UserControl就好了吗,干嘛用代码直接写,直接继承Control?

这个我就不多说了,总之制作自定义控件不光可以使用UserControl。有的时候用Control会更好一些。


那么今天的问题是,当我们按照以下的代码写了一个控件,并且将之拖到到窗体上的时候,我们会发现。

即使在设计试图下(还没有运行程序的时候),我们的鼠标也依然可以直接点进这个Control里的ComboBox。并且还可以用键盘输入值。

这个是非常诡异的一个表现,如果你是要做控件给别人用的话,这个现象就会显示出你不够专业。


示例代码:

 using System;
 using System.Collections.Generic;
 using System.Text;
 using System.Windows.Forms;
 using System.Data;
 using System.ComponentModel;
 
 namespace WindowsFormsApplication1
 {
     public class TestComboBox : Control
     {
         private ComboBox m_combo;
         public Control GetInnerControl()
         {
             return m_combo;
         }
       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值