Welcome to MSDN Blogs Sign in | Join | Help

Using ToolStrip to Create a Custom Title Bar

Our current documentation on creating nonrectangular forms could stand some enhancement. The most glaring piece of missing info is how to add a custom title bar. The document we do have gives code for how to move the form if the user clicks anywhere in the form area - but how often do you need this? In most cases, you want to slap your own custom title bar on the app, and move the app around when the user clicks on this title bar and drags it about.

Picture 1: Meditate Awake! application

For the sample app I've been developing, I decided to replace the standard title bar with a ToolStrip that acts like a title bar. (Can't you tell I'm no graphic designer?) It was surprisingly easy to enable the ToolStrip to act like a title bar. The secret ingredient was setting ToolStrip.Capture to True when the mouse button is clicked; this is necessary to prevent the cursor from moving faster than the form, which results in the cursor flying away from the ToolStrip before you've released the left mouse button.

    Private _MouseOffset As Point
    Private isMouseDown As Boolean = False

    Private Sub TitleStrip_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TitleStrip.MouseDown
        If e.Button = System.Windows.Forms.MouseButtons.Left Then
            _MouseOffset = New Point(e.X, e.Y)
            _IsMouseDown = True
            TitleStrip.Capture = True
        End If
    End Sub

    Private Sub TitleStrip_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TitleStrip.MouseMove
        If _IsMouseDown Then
            Dim _CurrentPos As Point = Control.MousePosition
            _CurrentPos.X = _CurrentPos.X - _MouseOffset.X
            _CurrentPos.Y = _CurrentPos.Y - _MouseOffset.Y
            Me.Location = _CurrentPos
        End If
    End Sub

    Private Sub TitleStrip_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TitleStrip.MouseUp
        If e.Button = System.Windows.Forms.MouseButtons.Left Then
            _IsMouseDown = False
            TitleStrip.Capture = False
        End If
    End Sub

 

Published Friday, April 07, 2006 7:14 PM by Jay A. Allen
Filed under:

Comments

Wednesday, August 16, 2006 7:31 AM by lne818

# 使用 Windows Forms 2.0 创建智能应用程序布局

使用 Windows Forms 2.0 可以更加轻松地创建高级的动态和导航布局。
Tuesday, April 03, 2007 1:45 PM by 大口仔

# 使用 Windows Forms 2.0 创建智能应用程序布局

摘要:学习如何使用WindowsForms2.0中的新控件创建智能化和可扩展的应用程序布局。

从Microsoft下载中心下载C#和VisualBasic代码示例(903K...

# Windows Forms Documentation Updates Using ToolStrip to Create a | Wood TV Stand

Anonymous comments are disabled
 
Page view tracker