Sam*_*mbo 12 .net c# custom-controls winforms
我正在创建一个从UserControl派生的自定义控件,我想将焦点设置为.
自定义控件包含一个ComboBox控件,我在它旁边绘制一些字符串.
ComboBox可以获得焦点,但我希望能够将焦点设置为UserControl本身.如果它具有焦点,我的OnPaint处理程序被设置为稍微不同地绘制控件,但是当我创建自定义控件时它从父窗体调用CanFocus()并返回false.
是否有财产或其他东西?
Han*_*ant 22
UserControl将与你争吵,以避免获得焦点.它具有自动将焦点传递给子控件(如果有)的代码,如果它确实获得焦点.您至少必须覆盖WndProc()并捕获WM_SETFOCUS消息.可能还需要其他手术,如ControlStyles.Selectable以及TabStop和TabIndex属性.
您的下一个问题是,当UserControl确实具有焦点时,它不会对键盘消息做出有意义的响应.您需要检测UC背景上的点击以处理鼠标消息,并覆盖绘画,以便用户明白UC具有焦点(使用ControlPaint.DrawFocusRectangle).如果这开始听起来没有吸引力,那是因为UC真的是一个集装箱控制.
| 归档时间: |
|
| 查看次数: |
19051 次 |
| 最近记录: |