有没有办法使UserControl不可取消?

Mat*_*ze 11 .net winforms

有没有办法使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)


tom*_*bam 5

除了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)