[.NET/WinForms] BackColor van statusBar*

Pagina: 1
Acties:

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

Topicstarter
Ik heb een winforms applicatie geschreven in C#, en wil eigenlijk iets heel simpels, namelijk de backColor van een statusbar wijzigen. Dit krijg ik niet voor elkaar.
Het property wordt niet meer ondersteund (geen idee waarom niet) en een gevonden workaround krijg ik ook niet aan de praat. 8)7

[ Voor 8% gewijzigd door CaptBiele op 11-01-2006 18:47 ]


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 13-04 14:28
Statusbar = StatusStrip? Kan aan mij liggen, maar in C# 2005 Express kan ik daarvan gewoon de BackColor instellen hoor!

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Verwijderd

riezebosch schreef op woensdag 11 januari 2006 @ 21:44:
Statusbar = StatusStrip? Kan aan mij liggen, maar in C# 2005 Express kan ik daarvan gewoon de BackColor instellen hoor!
Statusbar != StatusStrip
De statusbar zit in VS2003 (staat goed verstopt in de link ;-) )

  • DoDo
  • Registratie: Juli 2001
  • Laatst online: 21:25
In vstudio 2003 kan ik nog steeds gewoon "StatusBar1.BackColor"

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 15-04 21:42
DoDo schreef op donderdag 12 januari 2006 @ 07:54:
In vstudio 2003 kan ik nog steeds gewoon "StatusBar1.BackColor"
Ja, maar de set in die Property is niet geimplementeerd. Je kunt wel de huidige color opvragen, maar niet wijzigen. Dunno why, maar de example die Microsoft geeft, in de link uit de TopicStart, werkt bij mij iig wel. Je geeft nu al je panels een achtergrond kleur, waarbij je dus zelf moet gaan lopen kleuren.

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

Topicstarter
Sybr_E-N schreef op donderdag 12 januari 2006 @ 09:49:
Dunno why, maar de example die Microsoft geeft, in de link uit de TopicStart, werkt bij mij iig wel. Je geeft nu al je panels een achtergrond kleur, waarbij je dus zelf moet gaan lopen kleuren.
En je ziet dus niet dat het losse panels zijn? Dan moet ik het nog eens proberen, want ik kreeg het niet aan de praat.

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

Topicstarter
De workaround werkt prima.
Alleen nu heb ik een probleem met het updaten van de tekst in de statusbar.

Om een statusbar met een gekleurde achtergrond te krijgen heb ik er dus een panel ingezet, en deze handmatig gekleurd. Ik teken de string erin, afhankelijk van statusBar1.Text....
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    private void statusBar1_DrawItem(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent)
        {
            Graphics g = sbdevent.Graphics;
            StatusBar sb = (StatusBar)sender;
            RectangleF rectf = new RectangleF(sbdevent.Bounds.X, sbdevent.Bounds.Y, sbdevent.Bounds.Width, sbdevent.Bounds.Height);

            g.DrawRectangle(p, sbdevent.Bounds);
            sbdevent.Graphics.FillRectangle(Brushes.Red, sbdevent.Bounds);
            g.DrawString( statusBar1.Text, sb.Font, brYellowFontBrush, rectf);
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            statusBar1.Text = "nieuwe tekst";
            // drawitem firen
        }

Alleen als ik de statusBar1.Text property wijzig (mbv klik op button1), moet deze natuurlijk ook redrawed worden.
Dus ik moet op een of andere manier drawItem weer invoken.
Ik heb al geprobeerd om de code in een functie te stoppen en nogmaals aan te roepen, maar dan krijg ik sbdevent niet goed mee.
Ook dacht ik het te kunnen realiseren met Invalidate( ), zodat er automagisch gerepaint wordt, maar daar ben ik ook nog mee aan het prutsen. |:(
Pagina: 1