Domanda

Esiste un controllo che può spostare la finestra senza la barra del titolo (in alto) / Nessuna cornice a tutti.

sto facendo un'applicazione nota come sapete quindi voglio che sia compatta.

È stato utile?

Soluzione

È necessario tornare HTCAPTION dal WM_NCHITTEST nel WndProc:

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;
        }
    }
}

Che farà l'area client della finestra sembra di Windows per essere una barra del titolo.

Altri suggerimenti

ho scritto un componente di farlo, si può trovare qui .

Può essere utilizzato per spostare alcun controllo, non solo una finestra. È possibile utilizzare esplicitamente nel codice, o semplicemente cadere sulla superficie progettista e impostare la proprietà EnableDragMove sulla finestra o il controllo, come illustrato di seguito:

Schermata

Dopo aver tentato qualcosa di simile prima vi posso dire che non è particolarmente facile. Quello che è necessario fare è previsto su un / OnMouseMove / OnMouseUp evento OnMouseDown alla forma stessa (o un certo controllo nella forma) che aggiorna la posizione del controllo quando l'utente fa clic e trascina. A mia conoscenza non c'è costruito in controllo che vi permetterà di fare clic e trascinare una finestra diversa da quella del titolo.

Se avete intenzione di costruire un'applicazione da zero mi sento di raccomandare la creazione utilizzando WPF.

Todd Miranda ha una grande dimostrazione di creazione di un gadget come l'applicazione sopra a windowsclient.net.

Link alla manifestazione: http://windowsclient.net/learn/video. aspx? v = 5177

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top