2016-05-21 75 views
5

Sto lavorando in C#. So che questa domanda viene comunemente posta, è solo che non riesco ancora a nascondere completamente la barra in alto. Questo è il risultato che ottengo quando imposto la stringa di testo del modulo da "" e controlbox = false.Impossibile nascondere completamente la barra superiore in Windows Form C#

vuole ancora l'effetto ombra:

Still want the shadow effect

Quindi, come potete vedere il bordo sul lato è andato (Ottimo) e c'è la solita ombra (grande!), Ma il bordo superiore ha questa strana linea bianca che non riesco a rimuovere.

Non desidero impostare la proprietà del bordo del modulo su "nessuno" poiché mi piacciono i controlli di grandi dimensioni integrati e l'ombra del modulo, quindi non è un'opzione. Qualche altro suggerimento per questo?

Grazie in anticipo!

(dovrei specificare che i pulsanti sul lato superiore destro della mano sono generati da me e mostrare il bordo della mia forma modificabile. Lo spazio bianco di cui sopra, che è quello che sto cercando di rimuovere.)

+0

Hai provato questo: [Come creare un modulo con un bordo, ma senza barra del titolo? (come il controllo del volume su Windows 7)] (http://stackoverflow.com/questions/3594086/how-to-create-a-form-with-a-border-but-no-title-bar-like-volume- control-on-wi) –

+0

@RezaAghaei Sì, l'ho letto, l'ho letto prima di postarlo. form.FormBorderStyle = FormBorderStyle.SizableToolWindow; Io quello che ho impostato come confine, eppure sembra sempre lo stesso. – user3811284

risposta

0

ho potuto non replicarlo in Windows 7: ottengo un quadrato bianco.
(Dipende da FormBorderStyle - Ho inserito "Nessuno" in esso, per rimuovere il bordo)
Passi che ho preso:
1. Creare una nuova applicazione Windows Form.
2. Fare clic sulla finestra Modulo
3. Proprietà->
3.1. FormBorderStyle = Nessuno
3.2. ControlBox = False
3.3. Text =
(nel testo ho cancellato il 'Form1' e lasciato vuoto)

  1. Quale progetto ha utilizzato?
    Non riuscivo a trovarlo facilmente con WPF, quindi immagino che questa sia l'applicazione Windows Form.

  2. Quale sistema operativo si sta utilizzando?
    Sto usando Windows 7, è tuo Windows 10?

  3. Quello che non capisco è come si hanno i pulsanti Riduci a icona, Ingrandisci e Chiudi a destra. ControlNox = false li rimuove istantaneamente.

+2

Ho installato Windows 10, quindi forse questo è un errore di Windows 10? Non ho provato a eseguire il mio programma su un computer Windows 7. Come ho detto prima, non voglio usare FormBorderStyle = None poiché ho bisogno dell'ombra e delle opzioni di ridimensionamento per il mio modulo. I pulsanti Riduci a icona, Ingrandisci e Chiudi sono i pulsanti che ho creato io stesso (non la casella di controllo). – user3811284

+0

Hai detto che volevi rimuovere quel sottile spazio bianco? O quella intera area grigia i pulsanti sono accesi? –

+0

Ori Nachum, solo lo spazio bianco sottile! – user3811284

1

Ho avuto lo stesso problema su Windows 10

public const int WM_NCCALCSIZE = 0x0083; 


    private struct RECT 
    { 
     public int Left; 
     public int Top; 
     public int Right; 
     public int Bottom; 
    } 

NCCALCSIZE_PARAMS structure

contiene informazioni che un'applicazione può utilizzare durante l'elaborazione del messaggio WM_NCCALCSIZE per calcolare la dimensione, la posizione e contenuto valido dell'area client di una finestra.

struct NCCALCSIZE_PARAMS 
    { 
     public RECT rgrc0, rgrc1, rgrc2; 
     public IntPtr lppos; 
    } 

WM_NCCALCSIZE message

Inviato quando la dimensione e la posizione dell'area client di una finestra devono essere calcolati. Elaborando questo messaggio, un'applicazione può controllare il contenuto dell'area client della finestra quando le dimensioni o la posizione della finestra cambiano.

Una finestra riceve questo messaggio tramite la sua funzione WindowProc.

protected override void WndProc(ref Message m) 
    { 

     switch (m.Msg) 
     { 

      case WM_NCCALCSIZE: 
       { 
        NCCALCSIZE_PARAMS csp; 

        csp = (NCCALCSIZE_PARAMS)Marshal.PtrToStructure(m.LParam, 
        typeof(NCCALCSIZE_PARAMS)); 
        csp.rgrc0.Top = csp.rgrc0.Top - 3; 
        Marshal.StructureToPtr(csp, m.LParam, false); 
       } 
       break; 
     } 
    } 

e nero spazio sulla parte superiore andato.