65.9K
CodeProject 正在变化。 阅读更多。
Home

具有自定义标题栏和灵活边框的窗体

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.89/5 (16投票s)

2007年4月11日

CPOL

2分钟阅读

viewsIcon

68861

downloadIcon

3660

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

Screenshot - customizedForms.jpg

引言

首先,我想说我是一个 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.csMin_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 日:首次发布
© . All rights reserved.