Benutzerdefinierte Titelleiste und Formular Borders
Frage
Ich habe ein Formular, dass ich möchte eine benutzerdefinierte Titelleiste ziehen mit sowie benutzerdefinierte Ränder um die Anwendung das Formular Redimensionierung zu übernehmen. Ich drehte die reguläre Titelleiste für die Anwendung aus, und meine eigenen aus einem Paar Bild bauen, die ich Anker auf die Anwendung eingestellt. Das Problem ist, wenn das Formular geändert wird, ist es sehr abgehackt aussieht, weil die Form tut es, bis der Größe nach der Form gemalt. Was brauche ich, um zu tun, um die Änderung der Größe der Grenze zu glätten. Auch wenn ich die Grenzen der Form beginnt zu blinken viel, um die Größe und die Größenänderung ist nicht ganz richtig. Es ändert die Größe, aber es ist nicht die Menge nicht die Größe es auch angenommen hat. Hier ist ein Beispiel für den Code i verwenden Sie das Formular mit den Grenzen zu ändern.
#region formDragResize
private Point startDrag = new Point(0, 0);
private bool resize = false;
private void rightSideBarMid_MouseDown(object sender, MouseEventArgs e)
{
this.startDrag = e.Location;
this.resize = true;
}
private void rightSideBarMid_MouseUp(object sender, MouseEventArgs e)
{
this.resize = false;
}
private void rightSideBarMid_MouseMove(object sender, MouseEventArgs e)
{
if (this.resize)
{
Point p1 = new Point(e.X, e.Y);
Point p2 = this.PointToScreen(p1);
this.Width = p2.X - this.startDrag.X;
}
}
#endregion
Ich bin sehr neu, wenn es um Bildung geht schmerzend und solche so dass jede Hilfe sehr geschätzt wird.
Danke!
Lösung
Unter der Annahme, Sie sprechen über Windows Forms, Sie möchten nicht die Titelleiste auszuschalten. Sie lassen Sie es auf, aber Sie dann Non-Client-Farbe-Nachrichten verarbeiten.
Allerdings WinForms nicht enthalten Nicht-Client-Farbe Ereignisse, so werden Sie WndProc außer Kraft setzen müssen, und übernehmen die NC_ * Nachrichten selbst oder einen Dritten Bibliothek verwenden, der diese der Fall ist.