有没有办法使UserControl不可取消?
编辑:那么 SetStyle(ControlStyles.Selectable, false)
是要走的路.但仍然存在差异Control.如果继承表单,Control则初始控件不会失去焦点.但是在点击了源自UserControl和的控件之后
ControlStyles.Selectable
Run Code Online (Sandbox Code Playgroud)
应用焦点从初始控制中删除.
Ada*_*son 13
在您InitializeComponent()需要调用SetStyle并将ControlStyles.Selectable样式设置为的构造函数中false:
SetStyle(ControlStyles.Selectable, false);
Run Code Online (Sandbox Code Playgroud)
除了ControlStyles.Selectable之外,还有一个ControlStyles.ContainerControl - 文档在这个主题上相当稀疏(如果为true,则控件是类似于容器的控件),但它会以某种方式影响子控件是否获得焦点而不是控件本身.
编辑:
我刚刚注意到另一个有趣的事实.在反射器中查看UserControl表明它强制在OnMouseDown中设置输入焦点.因此,在不调用base.OnMouseDown(e)的情况下重写OnMouseDown可以解决问题,没有副作用.
[EditorBrowsable(EditorBrowsableState.Advanced)]
protected override void OnMouseDown(MouseEventArgs e)
{
if (!this.FocusInside())
{
this.FocusInternal();
}
base.OnMouseDown(e);
}
Run Code Online (Sandbox Code Playgroud)