Visual Studio .NET 2002Visual Studio .NET 2003Visual Studio 2005Windows XPC# 2.0入门开发Visual StudioWindows.NETC#
具有自定义标题栏和灵活边框的窗体






2.89/5 (16投票s)
一篇关于如何自定义标题栏(例如,在标题栏上显示图像)以及更改边框宽度和边框颜色的文章。

引言
首先,我想说我是一个 C# 新手,这是我的第一篇文章。因此,如果专家们觉得这篇文章没有什么用处,我向他们道歉。但我认为可能有人需要这篇文章。
我们知道自定义窗体的标题栏和边框不是一件容易的事。您可以看到 Microsoft-Office 2007 或 Yahoo Messenger for Windows Vista 在其标题栏上显示图像。本文记录了根据您的需要自定义标题栏以及设置窗体的边框宽度和边框颜色的方法。
我是如何做的
我将窗体的边框样式设置为无,并使用一些图片框来绘制边框。我制作了一个带有三个按钮的用户控件,用于最小化、最大化和关闭窗体。我在顶部使用了一个面板,在窗体的左上角使用了一个图片框来创建标题栏。
一些属性和方法
以下是您可以在代码中使用的一些属性和方法的列表
int BorderWidth
:获取或设置窗体边框的宽度Color BorderColor
:设置窗体的边框颜色bool MinimizeButton
:如果true
则显示最小化按钮,否则隐藏最小化按钮bool MaximizeButton
:如果true
则显示最大化按钮,否则隐藏最大化按钮bool CloseButton
:如果true
则显示关闭按钮,否则隐藏关闭按钮bool MinMaxCloseButtons
:如果true
则显示所有三个按钮,否则隐藏所有三个按钮int MinMaxCloseHeight
:获取或设置最小化、最大化和关闭按钮的高度
void HideBorders()
:隐藏窗体边框void ShowBorders()
:显示窗体边框
Using the Code
使用此代码非常简单。将 CustomizedForms.cs 和 Min_Max_Close.cs 以及它们的设计器和资源文件添加到您的项目中。从 CustomizedForms
而不是 System.Windows.Forms.Form
继承您的窗体。
您的类声明将是
public partial class CustomizeFormExample : CustomizedForm
您可以使用面板、图片框或任何其他控件来设计您的标题栏。要使您的窗体可以拖动,您只需将以下代码添加到您用于标题栏的控件的鼠标按下、鼠标移动和鼠标抬起事件中。
bool Active = false;
int X = 0,Y=0;
private void CaptionBar_MouseDown(object sender,MouseEventArgs e)
{
Active = true;
X = e.X;
Y = e.Y;
}
private void CaptionBar_MouseMove(object sender, MouseEventArgs e)
{
if (Active)
{
this.Location = new Point(this.Left + e.X-X, this.Top + e.Y-Y);
Refresh();
}
}
private void CaptionBar_MouseUp(object sender, MouseEventArgs e)
{
Active = false;
}
历史
- 2007 年 4 月 11 日:首次发布