易于自定义标题栏






4.92/5 (11投票s)
创建自己的自定义标题栏,
引言
大家好。我想给大家分享另一个漂亮的标题栏控件,它能让你的应用程序更美观。我花了大量时间在网上寻找这样的标题栏,但一直没找到。但在搜索过程中,我收集了一些关键点,从而制作了自己的标题栏。很抱歉,我记不清从哪里收集到其中一些要点。但我应该对他们表示崇高的敬意。如果我再次找到这些资料来源,我会在我的文章中添加参考文献。
根据我的发现并运用我的知识,我将向大家展示一个可自定义的标题栏控件,它可以节省你的时间。还有一点,这个控件还不是完全可自定义的。目的是让大家了解在 C# .NET 中创建这样的控件是多么容易。在这个创建过程中,我使用了之前创建的控制框控件来创建这个标题栏。我将解释如何为窗体创建一个控制框。然后,我将继续讲解更容易开发的标题栏。
Using the Code
虽然本文提供了代码,但您可以根据自己的喜好更改外观。此控件提供与 Windows 控制框相同的功能。
创建一个 C# “Windows 控件库”项目,你就可以实现所有这些功能。在控件窗体上放置三个标签控件,并为它们分配图像。为了在光标移到按钮上时高亮显示它,我们必须捕获每个标签控件的鼠标移动事件并添加以下代码段……
private void lblMinimize_MouseMove(object sender, MouseEventArgs e)
{
lblMinimize.Image = global::window_control_box.Properties.Resources.minimize_sele;}
……你必须为控件设置另一个图像,以反映标签控件中的鼠标悬停效果。为此,您可以使用任何图像编辑/创建软件。
我不会详细讲解,因为这很简单。因此,您可以为所有三个标签添加这些代码段。
接下来是如何创建最小化、最大化和关闭操作。为此,您必须在标签控件的单击事件中添加以下代码段
Private void lblClose_Click(object sender, EventArgs e)
{
this.ParentForm.Close();
}
private void lblMaximize_Click(object sender, EventArgs e)
{
if (this.ParentForm.WindowState == FormWindowState.Maximized)
{
this.ParentForm.WindowState = FormWindowState.Normal;
}
else if(this.ParentForm.WindowState == FormWindowState.Normal)
{
this.ParentForm.WindowState = FormWindowState.Maximized;
}
this.ParentForm.Show();
}
在这里,我们所做的不是调用控件窗体的 `close` 方法,而是调用控件所在的父窗体。这将为我们完成任务。
我对最大化单击事件做了一些小的改动,使其行为与 Windows 最大化按钮的行为相同。
为了将最大化、最小化和关闭按钮作为属性提供给用户,我们只需要添加以下代码段
[Category("Appearance")]
[Description("Gets or sets maximize button visibility")]
public bool Maximize
{
set
{
lblMaximize.Visible = value;
}
get
{
return lblMaximize.Visible;
}
}
[Category("Appearance")]
[Description("Gets or sets minimize button visibility")]
public bool Minimize
{
set
{
lblMinimize.Visible = value;
}
get
{
return lblMinimize.Visible;
}
}
[Category("Appearance")]
[Description("Gets or sets close button visibility")]
public bool Close
{
set
{
lblClose.Visible = value;
}
get
{
return lblClose.Visible;
}
}
这就是创建“控制框”控件所需执行的所有操作。编译后,您将获得一个 DLL 文件。您可以在下一个控件创建项目中将其作为可视控件简单地使用。您需要做的就是在 C# 中右键单击工具箱窗格,然后单击“选择项……”。从那里,浏览此 DLL 并单击“确定”。然后将此控件拖放到您的项目 Windows 窗体上。
这里我附加了创建标题栏和控制框的两个项目。借助这两个项目,我相信您可以创建自己的标题栏。
如何在应用程序中使用标题栏
将 `TitleBarControl` 项目编译生成的两个 DLL 文件复制到应用程序源代码文件夹。如上所述,使用“选择项...”将控件添加到工具箱。
将标题栏控件拖放到您的应用程序中,并将控件的 Doc 属性设置为“top”。在属性对话框中,您可以看到标题栏控件的**标题**、**标题字体**、**标题前景色**、**标题背景色**属性。您可以设置这些属性并根据需要进行自定义。
文本显示存在限制。标题栏的显示区域是固定的。我将在不久的将来提供增强版本。因为您拥有标题栏控件的代码,所以您可以通过进行一些修改轻松克服这种情况。
将 Doc 属性设置为“Top”后,您必须使用**FormBorderStyle**属性移除传统的 Windows 标题。您可以选择无窗体边框样式,或者您可以使用一些技巧来移除标题栏,例如设置:
- ControlBox = false
- FormBorderStyle = FixedSingle
- Text = "" (应为空)
设置完如上所示的窗体属性后,您将获得带有您自己标题栏的窗体。
如果要更改控件的外观,则必须修改 `FormTitleBar` 和控制框控件中使用的图像。
更多技巧。
如何应用于 MDI 窗体
如果 MDI 窗体中包含菜单,请将“`FormTitileBar`”控件拖放到菜单上。然后它将位于主菜单下方。要将其上移,请右键单击“`FormTitleBar`”控件,然后单击“发送到后面”选项。这将完成工作。
在您应用此标题栏的所有窗体中,都必须通过调整窗体的属性来移除 Windows 标题栏。
历史
- 2009年9月11日:初始发布