Backcolor für ein Panel per Variable Ändern



  • Hi Leute,

    ich habe zwei fragen, erstens ich muss ca 40 Panels per Schleife ein und aus schalten das geht mit meiner Switch Case Schleife auch recht gut. Nun sollte ich aber auch noch je nach zustand die Backcolor ändern. Nur alle meine Versuche den Farbwert zu übergeben schlagen fehl.

    Panel1->BackColor = Panel1->BackColor.(farbe);

    tut halt nicht... und ich finde nirgends auch nur einen aufhänger wie ich das machen könnte. Muss ich die Farbe in Hex übergehen oder wie?

    Das nächste ist das ich nun zum 3. Mal hänge im VC2008 und das unter meinem VB6 alles kein Problem war und meine Logik hier nicht geht. Was für eine Lektüre sollte ich mir hier zu gemüte führen welche wirklich was bringt. Habe mit das Markt und Technik Buch gekauft aber das ist ja nicht wirklich was.
    Hat da einer einen wirklich guten Tip? Darf auch ein Paar Euros kosten wenns was taugt.
    Bin wirklich bestrebt auch hier mal Aktiv helfen zu können und nicht immer wie der Blöde Fragen zu müssen.

    Dank Euch

    Andreas



  • Hi,

    Das gibts zumindest in C++/CLI nicht.

    Switch Case Schleife

    (Nur entweder switch/case oder aber ein Schleife.)

    tut halt nicht.

    Bitte beschreibe den Fehler genauer: Compiler Error, Linker Error, Runtime Error, Exceptions?

    Versuchs mal so:

    Panel1->BackColor = System::Drawing::Color::Blue;
    

    http://msdn.microsoft.com/en-us/library/system.drawing.color_members.aspx
    http://msdn.microsoft.com/en-us/library/system.windows.forms.panel.aspx
    http://msdn.microsoft.com/en-us/library/system.windows.forms.control.backcolor.aspx

    Gruss Simon



  • Hi

    danke für deine Antwort.
    Habe mich glaube mich etwas unglücklich ausgedrückt.
    Mit der Schleife meine ich einen Timer der immer einen entsprechenden Case übergeben bekommt um dann das entsprechend auszuführen.

    ich möchte also das ich am Timer anfange in einer If verzweigung sage mache nimm farbe grün und er dann in jedem Case über ne Variable die Farbe nehmen kann. Da es anstatt grün auch mal blau oder rot sein kann.

    Die Switch Case verzweigung geht und macht mir im Moment meine Panels Visible oder auch nicht. Möchte nur nicht in jeden Case eine IF setzen müssen und die zig farben übergeben.

    Also quasi sagen:

    if checkBox1->Checked==true
    {
    
    farbe = "ROT";
    }
    else 
    {
    farbe = "Blau";
    }
    Switch (Task0)
    
    case1:
    {
    panel1->BackColor=Panel1->BackColor.Farbe;
    }
    .
    .
    .
    .
    case50:
    {
    panel50->BackColor=Panel1->BackColor.Farbe;
    }
    

    Danke für eure Hilfe



  • Hy Andreas,

    Wie wärs wenn du dir mal anschauen würdest, von welcher Klasse die Konstante System::Drawing::Color::Blue ist. Dann würde dir das vllt auch selber einfallen 😉 (Hilfe: Die Klasse heißt: System::Drawing::Color)

    Und wenn nicht dann probiers doch mal in die Richtung:

    System::Drawing::Color clMy = System::Drawing::Color::Blue;
    if (checkBox1->Checked)
    {
      clMy = System::Drawing::Color::Red;
    }
    
    switch (Task0)
    {
      case 1:
      {
        panel->BackColor = clMy;
      }
      case 2:
      {
        panel->BackColor = clMy;
      }
    ....... (and so on)
    }
    

    Achja und versuch dich mal an Einrückungen zu halten, ist an sich einfach nen schönerer Programmierstil um des ganze dann auch wieder recht einfach zu lesen...

    Mfg Marc-O



  • Hi

    dank dir für die Antwort.
    War genau das... war glaub etwas geistig umnachtet wo ich das nicht gepeilt hat das es so geht.
    Hat mir jemand einen Tip für die Frage nach einem Guten Buch? Ich arbeite mit vc2008 derzeit.

    Viele Grüße

    Andreas



  • Für welches Thema suchst du denn ein Buch?


Anmelden zum Antworten