Laden...

Button Problem

Erstellt von arbeitsviech vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.226 Views
A
arbeitsviech Themenstarter:in
10 Beiträge seit 2007
vor 16 Jahren
Button Problem

Hallo,

Folgendes Problem mit meinen Buttons:
Vorgeschichte:
Ich habe einen Vista-Style auf meinem XP-Rechner. Dort sehen die Buttons anders(besser) aus. Die Schriftfarbe ist auf weiß gesetzt. Wenn man aber den XP-Standard-Style einstellt kann man den Text nicht mehr lesen. Deshalb habe ich mir eigene Buttons erstellt. (Einfach Screenshots von den Vista-Style-Buttons gemacht und dann als Background Image für die verschiedenen Zustände festgelegt.)

Nun das Problem:
Normal schauen die Buttons genau so aus wie ich will, aber wenn das aktive Fenster den Fokus verliert (z.B. Wenn ich auf den Desktop klicke, oder auf ein anders Fenster, oder mit ShowDialog ein anderes Fenster anzeige) sind die Buttons nicht mehr rund sondern eckig. Wenn ich dann wieder in das Fenster klicke werden sie wieder rund.
Kann mir irgendwer sagen woran das liegt und was ich dagegen machen kann?

Danke im Voraus.

Arbeitsviech

Bild rund:

Bild eckig:

Hier der Code der Buttons


protected override void OnMouseEnter(EventArgs e)
{
      if ((this.Size.Width != width + 2) && (this.Size.Height != height + 2))
      {
           mouseclicked = false;
           this.Size = new Size(width + 2, height + 2);
           this.Location = new Point(this.Location.X - 1, this.Location.Y - 1);
           this.BackgroundImage = Properties.Resources.button_mouseover;
       }
       base.OnMouseEnter(e);
}

protected override void OnMouseLeave(EventArgs e)
{
       if (!mouseclicked)
       {
           this.Size = new Size(width, height);
           this.Location = new Point(this.Location.X + 1, this.Location.Y + 1);
       }
       if (!focused)
          this.BackgroundImage = Properties.Resources.button;
       else
           this.BackgroundImage = Properties.Resources.button_focused;
       base.OnMouseLeave(e);
}

protected override void OnMouseDown(MouseEventArgs mevent)
{
       if ((mevent.Button == MouseButtons.Left) && (mouseclicked == false))
       {
           mouseclicked = true;
           this.Size = new Size(width, height);
           this.Location = new Point(this.Location.X + 1, this.Location.Y + 1);
           this.BackgroundImage = Properties.Resources.button_mouseclick;
       }
       base.OnMouseDown(mevent);
}

protected override void OnMouseUp(MouseEventArgs mevent)
{
       if (ClientRectangle.Contains(mevent.X, mevent.Y))
       {
            if (mevent.Button == MouseButtons.Left)
           {
                 mouseclicked = false;
                 this.Size = new Size(width + 2, height + 2);
                 this.Location = new Point(this.Location.X - 1, this.Location.Y - 1);
                 this.BackgroundImage = Properties.Resources.button_mouseover;
           }
       }
       base.OnMouseUp(mevent);
}

protected override void OnMouseMove(MouseEventArgs mevent)
{
       if (ClientRectangle.Contains(mevent.X, mevent.Y))
       {
           if (this.Capture && !mouseclicked && mevent.Button == MouseButtons.Left)
           {
               mouseclicked = true;
               this.Size = new Size(width, height);
               this.Location = new Point(this.Location.X + 1, this.Location.Y + 1);
               this.BackgroundImage = Properties.Resources.button_mouseclick;
           }
       }
       else
       {
           if (mouseclicked)
           {
               mouseclicked = false;
               this.Size = new Size(width + 2, height + 2);
               this.Location = new Point(this.Location.X - 1, this.Location.Y - 1);
               this.BackgroundImage = Properties.Resources.button_mouseover;
           }
       }
       base.OnMouseMove(mevent);
}

protected override void OnEnter(EventArgs e)
{
       focused = true;
       this.BackgroundImage = Properties.Resources.button_focused;
       base.OnEnter(e);
}

protected override void OnLeave(EventArgs e)
{
       focused = false;
       this.BackgroundImage = Properties.Resources.button;
       base.OnLeave(e);
}

protected override void OnSizeChanged(EventArgs e)
{
       base.OnSizeChanged(e);
       if (fisttime)
       {
           fisttime = false;
           width = base.Width;
           height = base.Height;
       }
}

Und Gott fragte die Steine: "Wollt ihr Programmierer werden?"
Doch die Steine antworteten: "Nein, denn wir sind nicht hart genug!"

643 Beiträge seit 2006
vor 16 Jahren

ich würde an deiner stelle größe der buttons in jeden zustand beibehalten. du kanst ja pngs verwenden dan hast du das ehh nicht mehr nötig.

ich habe mir dein code nicht ganz durch geschaut aber ich habe schon oft das selbe getan und ich hatte das problem nicht.

A
arbeitsviech Themenstarter:in
10 Beiträge seit 2007
vor 16 Jahren

Danke für deine Anregungen, Ayke

Habe jetzt alle Buttons gleich groß gemacht (die kleineren mit einem Transpareten Rahmen außen herum) und schon funktioniert es wunderbar!

Und Gott fragte die Steine: "Wollt ihr Programmierer werden?"
Doch die Steine antworteten: "Nein, denn wir sind nicht hart genug!"