gpt4 book ai didi

c# - 在 SplitContainer 上禁用焦点提示

转载 作者:太空狗 更新时间:2023-10-29 22:08:24 27 4
gpt4 key购买 nike

如何禁用 SplitContainer 上的焦点提示?我问是因为我宁愿使用 OnPaint 自己绘制它们,以使其看起来更平滑。

我试过这个:

    protected override bool ShowFocusCues
{
get
{
return false;
}
}

这是我的控件:

    public class cSplitContainer : SplitContainer
{
private bool IsDragging;

protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (!IsSplitterFixed) IsDragging = true;
Invalidate();
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
if (IsDragging)
{
IsDragging = false;
IsSplitterFixed = false;
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (IsDragging)
{
IsSplitterFixed = true;
if (e.Button == MouseButtons.Left)
{
if (Orientation == Orientation.Vertical)
{
if (e.X > 0 && e.X < Width) SplitterDistance = e.X;
}
else
{
if (e.Y > 0 && e.Y < Height) SplitterDistance = e.Y;
}
}
else
{
IsDragging = false;
IsSplitterFixed = false;
}
}
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
base.OnPaint(e);
if (IsDragging)
{
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(127, 0, 0, 0)), Orientation == Orientation.Horizontal ? new Rectangle(0, SplitterDistance, Width, SplitterWidth) : new Rectangle(SplitterDistance, 0, SplitterWidth, Height));
}
}
}

但是没有用。我还尝试了之前提到的其他一些方法,但我仍然获得焦点提示。

最佳答案

认为您看到的 FocusCue 与其说是一个用于移动 slider 的 float 窗口。

如果键盘访问不重要,您可以尝试将其设置为不可选择:

public class MySplit : SplitContainer {

public MySplit() {
this.SetStyle(ControlStyles.Selectable, false);
}

protected override void OnPaint(PaintEventArgs e) {
e.Graphics.Clear(Color.Red);
}
}

这会阻止 SplitContainer 获得焦点,但您的鼠标仍然可以与之交互。

关于c# - 在 SplitContainer 上禁用焦点提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com