通过按制表位键

时间:2017-03-22 07:31:48

标签: c# user-controls runtime paint

在我自己的设计中创建用户控件需要一些帮助。我创建了一个用户控件,它已经快完成了。它只需要点润......

我的问题:
如果我通过按Tab键来关注我的用户控件(在运行时,而不是设计时间),上面会画一个恼人的矩形(黑色)。

这是我目前的解决方案': 只需用右刷子覆盖矩形即可。

private void ButtonOnPaint(object sender, PaintEventArgs e)
{
    if (Image != null | BackgroundImage != null)
        return;

    var penColor = Color.Transparent;

    if (!_mouseCurrentMoveOver)
        penColor = BackgroundColor;
    else if (_mouseCurrentMoveOver)
        penColor = MouseOverBackColor;

    if (_mouseCurrentDown)
        penColor = MouseDownBackColor;

    if (penColor == Color.Transparent)
        return;

    using (var p = new Pen(penColor))
    {
        var startPoint = new Point(5, 5);
        var sizeRectangle = new Size(
            _button.Width - startPoint.X * 2 - 1, 
            _button.Height - startPoint.Y * 2 - 1);

        e.Graphics.DrawRectangle(p, startPoint.X, startPoint.Y, sizeRectangle.Width, sizeRectangle.Height);
    }
}

这不起作用的原因是,如果我设置 BackgroundImage - 它将被 OnPaint 事件覆盖。

所以问题是:如何禁用此焦点矩形?

1 个答案:

答案 0 :(得分:0)

在用户控件的构造函数中,您可以调用

SetStyle(ControlStyles.Selectable, false);

这将禁用在用户控件中选择控件的功能,例如: Tab键。如果这是您想要保留的功能,那么此解决方案对您不起作用。