C# Chrome和其他应用程序如何覆盖默认的windows窗体边框?

C# Chrome和其他应用程序如何覆盖默认的windows窗体边框?,c#,windows,winforms,C#,Windows,Winforms,有一些程序,如Google Chrome和以下程序: 它们的windows窗体边框与默认边框不同。这些程序如何做到这一点,并且仍然允许用户拖动窗口?在C#中是否可能?有很多组件套件(DevExpress、Infrastics、Telerik等)可以这样做,但您也可以自己做。但是要准备脏了——真的脏了 基本上,您必须捕获windows消息(是的,本机!)并正确处理它们。在本章中,使表单可拖动是最简单的事情(您只需告诉windows鼠标位于标题栏区域上,即使它不是>>) 让我回到画上来:别这样 有很

有一些程序,如Google Chrome和以下程序:


它们的windows窗体边框与默认边框不同。这些程序如何做到这一点,并且仍然允许用户拖动窗口?在C#中是否可能?

有很多组件套件(DevExpress、Infrastics、Telerik等)可以这样做,但您也可以自己做。但是要准备脏了——真的脏了

基本上,您必须捕获windows消息(是的,本机!)并正确处理它们。在本章中,使表单可拖动是最简单的事情(您只需告诉windows鼠标位于标题栏区域上,即使它不是>>)

让我回到画上来:别这样

有很多事情要处理

  • 您的表单是否处于最大化、最小化、正常状态
  • 哪些按钮(最小/最大/关闭)已启用
  • 它是一个工具窗口还是一个相当大的窗口
  • 有一个新的吗
  • 这个表格大吗?如果是这样的话,你也得画边界
。。。还有更多

此外,在非客户端区域中绘制不如使用图形对象绘制用户控件那么容易。即使你现在还不害怕,你可能会发现自己破坏了表单控件的布局逻辑,因为表单的大小与它的
ClientSize
相同

请考虑使用DEVExcel或任何其他工具包。说到DevExpress,我知道他们有一套非常棒的控件,而且我非常确定XtraForm(它可以绘制所有标题栏)也包括在内

拯救你生命中的大部分,跳过这一章


(但是,如果你足够勇敢,无论如何都要检查一下。)

有很多组件套件(DevExpress、Infrastics、Telerik等)都在这样做,但你也可以自己做。但是要准备脏了——真的脏了

基本上,您必须捕获windows消息(是的,本机!)并正确处理它们。在本章中,使表单可拖动是最简单的事情(您只需告诉windows鼠标位于标题栏区域上,即使它不是>>)

让我回到画上来:别这样

有很多事情要处理

  • 您的表单是否处于最大化、最小化、正常状态
  • 哪些按钮(最小/最大/关闭)已启用
  • 它是一个工具窗口还是一个相当大的窗口
  • 有一个新的吗
  • 这个表格大吗?如果是这样的话,你也得画边界
。。。还有更多

此外,在非客户端区域中绘制不如使用图形对象绘制用户控件那么容易。即使你现在还不害怕,你可能会发现自己破坏了表单控件的布局逻辑,因为表单的大小与它的
ClientSize
相同

请考虑使用DEVExcel或任何其他工具包。说到DevExpress,我知道他们有一套非常棒的控件,而且我非常确定XtraForm(它可以绘制所有标题栏)也包括在内

拯救你生命中的大部分,跳过这一章


(不过,如果你够勇敢的话,还是检查一下吧)。

我认为这两个都不是Windows窗体应用程序。在C#中可能吗?-当然,为什么不呢?查看WM_NCPAINT和相关信息,了解它是如何在引擎盖下完成的。-WPF可能对此有专门的支持;Windows窗体没有,你必须用传统的方式来做这个SO链接指的是像office一样的蒙皮,但如果你想让它看起来像其他东西,则使用相同的技术。你检查过这些SO问题吗,我认为这两个都不是Windows窗体应用程序。在C#中可能吗当然,为什么不呢?查看WM_NCPAINT和相关信息,了解它是如何在引擎盖下完成的。-WPF可能对此有专门的支持;Windows窗体没有,你必须用传统的方式来做这个SO链接指的是像office一样的蒙皮,但如果你想让它看起来像其他东西,则使用相同的技术。你检查过这些SO问题吗,