2012-08-08 36 views
30

È possibile modificare il colore della barra del titolo di un WinForm in C#?Modifica del colore della barra del titolo in WinForm

  __________________________ 
     [Form1_______________-|[]|X] <- I want to change the color of this 
     |       | 
     |       | 
     |       | 
     |__________________________| 
+0

Intendi la [barra del titolo] (http://en.wikipedia.org/wiki/Title_bar) o il testo della barra del titolo? – 3aw5TZetdf

+0

sì voglio cambiare la barra del titolo backcolor ... – Aravind

+1

NOTA: a seconda della versione del sistema operativo e della combinazione di colori dell'utente, questa può essere una pessima idea. Come minimo, prendete in considerazione schemi di colori in cui la luce e il buio sono invertiti e decidete come adattare il colore dello sfondo per adattarlo a tali schemi. – ToolmakerSteve

risposta

14

Ho risolto questo problema. Questo è il codice:

[DllImport("User32.dll", CharSet = CharSet.Auto)] 
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); 

[DllImport("User32.dll")] 
private static extern IntPtr GetWindowDC(IntPtr hWnd); 

protected override void WndProc(ref Message m) 
{ 
    base.WndProc(ref m); 
    const int WM_NCPAINT = 0x85; 
    if (m.Msg == WM_NCPAINT) 
    { 
     IntPtr hdc = GetWindowDC(m.HWnd); 
     if ((int)hdc != 0) 
     { 
      Graphics g = Graphics.FromHdc(hdc); 
      g.FillRectangle(Brushes.Green, new Rectangle(0, 0, 4800, 23)); 
      g.Flush(); 
      ReleaseDC(m.HWnd, hdc); 
     } 
    } 
} 
+0

Questo non funziona. Titlebar ancora grigio – SpicyWeenie

+3

Non funziona per Windows 8 almeno – SpicyWeenie

+4

Provato su Windows 7. I problemi sono: il rettangolo verde nasconde il titolo del modulo e minimizza/massimizza/chiudi i pulsanti; non dipinge i bordi sinistro, destro e inferiore; la dimensione dei bordi dipende dalla specifica versione di Windows. Ad ogni modo è un tentativo interessante! – bluish

6

Che cosa si può fare è impostare la proprietà FormBorderStyle-None e fare quello che vuoi con il modulo utilizzando GDI.

8

Utilizzare il progetto Drawing Custom Borders in Windows Forms da CodePlex. Questo progetto è una piccola libreria che estende Windows Form con la possibilità di personalizzare l'area non client di Windows.

+1

CodePlex si sta arrestando. Essendo questa essenzialmente una risposta di solo collegamento, non avrà alcun valore una volta che ciò accadrà. – IInspectable

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla revisione] (/ recensione/post di bassa qualità/17137919) – Patrick

+0

@Ispectable "Al momento non esiste alcun piano per la data di fine per l'archivio." Quindi ... non è ancora una risposta ideale, ma nemmeno completamente inutile. –

-13

Questo è facile da fare:

  1. destro del mouse sul desktop e selezionare "Personalizza".

  2. Fare clic sul riquadro "Colore finestra" nella parte inferiore dello schermo.

  3. Scegli il tuo nuovo colore.

    Se il computer è configurato per utilizzare il tema Aero, è possibile scegliere uno dei colori standard o mixarne uno personalizzato.

    Se si utilizza il tema classico, verrà visualizzata una finestra di dialogo "Colore e aspetto della finestra" che è possibile utilizzare per impostare i colori. Fare clic sulla barra del titolo sul desktop di esempio, quello denominato "Finestra attiva", quindi utilizzare le caselle a discesa "Colore 1" e "Colore 2" per selezionare un nuovo colore.

posso solo supporre questo è quello che volevi dire, perché non c'è assolutamente nessuna scusa per cambiare solo il colore della barra del titolo dell'applicazione. C'è una ragione per cui questa è un'impostazione a livello di sistema.

Rispettare sempre le preferenze dell'utente. Se volevano che la barra del titolo fosse di un colore diverso, avrebbero scelto un colore diverso.

+0

Guarda la mia risposta. Funziona perfettamente ..:) – Aravind

+27

-1: Quando un programmatore vuole fare qualcosa, lui/lei ha le sue ragioni. La risposta non può essere "non ci sono scuse per voler farlo". – ThunderGr

+0

Le "ragioni" lui/lei/lei ha sono sbagliate o fuorviate. –

Problemi correlati