如何禁用SplitContainer上的焦點提示? 我問,因爲我寧願使用OnPaint自己繪製它們,以使其看起來更平滑。在SplitContainer上禁用焦點提示
我嘗試這樣做:
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));
}
}
}
,但沒有奏效。我也嘗試過之前提到的其他一些方法,但我仍然得到了重點線索。
將'DrawSplitHelper'標記爲'private void'太糟糕了。我猜測OP對他們正在使用的HalfToneBrush並不滿意。 – LarsTech 2012-03-14 19:19:45
它仍然無法正常工作。完成拖動時會顯示兩次提示。你有沒有試過我的代碼? – bytecode77 2012-03-14 20:13:25
@Devilschild我測試了它,它只有一點幫助。當您關注分隔欄時,它會顯示線索。如果控件失去焦點(例如通過選擇另一個應用程序的窗口並再次獲得焦點:那麼它將不會顯示任何線索。 – brgerner 2012-03-15 10:16:08