更改标题栏的颜色(非客户区)

时间:2018-03-26 05:30:10

标签: c# wpf winforms c++-cli

首先让我说我知道这是一个糟糕的形式,这个区域应该留给用户偏好。我也知道,如果你能够负担得起这条路线,可以使用DevExpress等第三方工具轻松完成。我真的不想制作无边框形式,因为它会从表单中删除所有功能,并且会丢失最小化/最大化淡入淡出过渡等内容。

尽管如上所述,是否有一种可靠且合理可访问的方法来更改WinForms或WPF中应用程序标题栏的颜色?似乎这样做的程序的一些例子是GitHub桌面,Firefox和Visual Studio。经过大量的研究,我发现了一种有效的方法,但它并不完全正确。

我找到的解决方案似乎使用了这种方法:Custom Window Frame Using DWM

这似乎也很相关:Drawing Custom Borders in Windows Forms

我找到的C#代码在这里:How to add a control to the Non client area of a custom form.

经过大量的研究,这是我能够在那里找到代码的最接近的实验。但是,存在很多问题。首先,当您最大化程序时,顶部有一个像素区域,程序不会触及显示器边缘。此外,程序的边框仍然应该全屏显示,不应该 标题栏没有标题,最小化和最大化按钮没有悬停动画。

任何想法或者这只是我们在WinForms / WPF中必须要考虑的事情吗? 我知道在UWP中很容易做到。

感谢您的时间。

0 个答案:

没有答案