2009-08-22 11 views
1

Gibt es ein Steuerelement, das das Fenster ohne die Titelleiste (oberste)/überhaupt keinen Rahmen verschieben kann.So erstellen Sie ein Fenster, das keine Titelleiste hat move

Ich mache eine Notiz Anwendung, wie Sie wissen, damit ich es kompakt sein möchte.

+0

bewegen wie? Würde sich das Fenster automatisch bewegen (vergleichbar mit einem msn 'Nudge') oder als Reaktion auf Benutzeraktionen ('Klicken und Ziehen')? –

Antwort

4

Sie müssen HTCAPTION vom WM_NCHITTEST in Ihrem WndProc zurückzukehren:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    const int WM_NCHITTEST = 0x0084; 
    const int HTCLIENT = 1; 
    const int HTCAPTION = 2; 
    protected override void WndProc(ref Message msg) 
    { 
     base.WndProc(ref msg); 
     if (msg.Msg == WM_NCHITTEST && msg.Result == (IntPtr)HTCLIENT) 
     { 
      msg.Result = (IntPtr)HTCAPTION; 
     } 
    } 
} 

Das wird den Client-Bereich des Fensters erscheinen auf Windows macht eine Titelleiste sein.

+0

Ja, das funktioniert aber nur, wenn Sie auf den Formularhintergrund klicken (können). Der Begriff "Notiz-Anwendung" erinnert mich an eine Fenster füllende Textbox. –

+0

Wo gebe ich diesen Code ein? –

+0

@Henk Holterman Ich habe "einige" Hintergrund :) Sie müssen nicht wirklich bewegen, es wird sich in 15 Sekunden nach Inaktivität schließen. Ich möchte dem Benutzer nur ein bisschen Freiheit geben. –

0

Nachdem ich so etwas versucht habe, kann ich Ihnen sagen, dass es nicht besonders einfach ist. Was Sie tun müssen, wird in einem OnMouseDown/OnMouseMove/OnMouseUp-Ereignis für das Formular selbst (oder ein Steuerelement in dem Formular) bereitgestellt, das die Position des Steuerelements aktualisiert, wenn der Benutzer klickt und zieht. Nach meinem Wissen gibt es keine eingebaute Steuerung, die es Ihnen erlaubt, auf ein anderes Fenster als den Titel zu klicken und zu ziehen.

0

Wenn Sie eine Anwendung von Grund auf neu erstellen, würde ich empfehlen, es mit WPF zu erstellen.

Todd Miranda hat eine großartige Demonstration der Erstellung eines Gadgets wie Anwendung auf windowsclient.net.

Link zur Demonstration: http://windowsclient.net/learn/video.aspx?v=5177

3

Ich schrieb eine Komponente, das zu tun, können Sie es here finden.

Es kann verwendet werden, um jede Steuerung zu verschieben, nicht nur ein Fenster. Sie können entweder explizit im Code verwenden, oder legen Sie es nur auf der Designer-Oberfläche und stellen Sie die EnableDragMove Eigenschaft auf dem Fenster oder Steuerelement, wie unten dargestellt:

Screenshot

+0

Dies ist eine vollständigere Antwort, danke. –

+0

Ich wünschte, ich könnte dir mehr als 1 Stimme geben! –

Verwandte Themen