gpt4 book ai didi

c# - 使拆分器对拆分面板可见

转载 作者:IT王子 更新时间:2023-10-29 03:57:04 24 4
gpt4 key购买 nike

如何使拆分面板拆分器对用户可见,而不是仅在鼠标悬停时更改光标时不可见?

最佳答案

出现这个问题是因为SplitContainer 控件没有直接属性 来设置可拖动分隔条本身的样式。

有多种方法可以实现此目的,尽管此处发布的其他答案也有效,但我在下面与您分享的方法最终是快速、可靠和最简单的方法。

@BluMonkMN 建议使用 3D 边框的方法,但如果您不想要任何边框怎么办?

@Giles Bathgate 建议添加一个 Paint 事件处理程序,尽管它肯定很优雅并且确实有效,但会带来轻微的性能成本,需要您向项目添加更多代码,这些代码在 C# 级别执行,并且可能有一天会成为维护问题。

@Philip Fourie 建议更改 SplitContainer.BackColor 属性值;然而,这最初会导致控件的整个背景改变颜色,而不仅仅是分隔条,导致没有颜色对比。

所以,我的解决方案是@Philip Fourie 的增强版。

首先,我要提到 SplitContainer 实际上有两个不同的子容器,它们都由分隔条分隔。这两个由 Panel1Panel2 属性表示。它们中的每一个本质上都是一个 Panel 容器,除了几个其他属性外,还具有自己的 BackColor 属性。

SplitContainer它的自己的BackColor 属性,总共有三种可能的唯一颜色。

现在,如果您要设置此 SplitContainer.BackColor 属性,Panel1Panel2“子控件”将自动继承该颜色值,现在它们都一样了,不会造成视觉对比!
此 [可能不受欢迎] 属性值继承仅在 Panel1.BackColor 和/或 Panel2.BackColor 属性尚未被显式设置时发生由您(即使提前在 Visual Studio 属性窗口中查看它们的属性值会显示“控制”。)

因此,设置属性的顺序很重要:

  1. 将“子”Panel1.BackColorPanel2.BackColor 属性设置为不同于“Control”的默认值强制一个明确的值(即使你真的想要“控制”;我们稍后会解决这个问题。)
  2. 将“父级”SplitContainer.BackColor 设置为您希望分隔栏的颜色。
  3. 最后,返回并将 Panel1.BackColorPanel2.BackColor 属性设置为您想要的颜色(可能返回到“Control”。)

正如@Philip Fourie 回答的那样,您可能希望设置 Width 属性,实际上一直命名为 SplitterWidth,而不管 [Horizo​​ntal vs. Vertical] Orientation 属性如何。

这里有一些有用的提示:

在 Visual Studio 窗体设计器中工作时,如果单击分隔栏两侧的 SplitContainer,您将选择 that Panel1Panel2“子”子容器。但是,如果您单击分隔条本身,您将选择“父级”SplitContainer

与@Stuart Helwig 所建议的相关,默认的 SplitterWidth 将导致分隔条在获得焦点时被勾勒出轮廓,从而掩盖您选择的颜色。将值提高到 56 或更高,这也使最终用户更容易抓取和拖动。

完成。快乐编码!

关于c# - 使拆分器对拆分面板可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2392492/

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