Frage für Steuerelemente

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Dizzy.

    Frage für Steuerelemente

    Hi ich hab mal eine Frage.

    Ist es möglich einem Control eine Nummer zuzuweisen. Ich meine also normalerweise würde mann das ja so schreiben

    VB.NET-Quellcode

    1. Button1.BackColor = Color.Blue


    Wenn ich nun aber 50 Buttons habe und keine Lust habe diesen Code fünfzig mal zu kopieren um unzuschreiben gibt es dann irgendwie eine Möglichkeit alle Buttons also Button1-50 in einer Zeile anzusprechen? Ich hatte schon die Idee mit einer For-Schleife:

    VB.NET-Quellcode

    1. For i = 1 To 50
    2. Button(i).BackColor = Color.Blue
    3. Next


    Geht aber nicht. Habt ihr eine Idee, ich hoffe ich hab mich gut ausgedrückt!

    MFG
    Phoenix Blaster :)
    Wenn Du die im Designer machst, erzeuge einen und vervielfältige ihn über C&P, da werden alle geänderten Eigenschaften mitgenommen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wie wäre es mit For Each?

    VB.NET-Quellcode

    1. For Each bt As Button In Me.Controls
    2. bt.BackColor = Color.Blue
    3. Next


    oder so ähnlich sollte das gehen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @ThuCommix:
    Der Code ging auch anders... War jetzt nur so elementar
    @LaMiy: Danke, ich kann mir das nie merken ;)
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Oder So (Sofern kein Button im TabControl, in ner Groupbox etc. ist)

    VB.NET-Quellcode

    1. For i As Integer = 1 To 50
    2. Me.Controls("Button" & i.ToString).BackColor = Color.Blue
    3. Next



    Oder so (wie RFG bereits meinte)

    VB.NET-Quellcode

    1. Dim btn_array As Button() = {Button1, Button2, Button3, Button4}
    2. For Each btn As Button in btn_array
    3. btn.BackColor = Color.Blue
    4. Next
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    Danke, hab aber noch eine kleine Frage :)

    Danke für die Hilfe.

    Wie kann ich es jetzt aber so machen das jeder Button eine zufällige Farbe bekommt. Zur Auswahl stehen zum Beispiel: Blau, Rot, Grün, Gelb und Orange. Wenn ich nun zum Beispiel diesen Code benutze:

    VB.NET-Quellcode

    1. For i As Integer = 1 To 50
    2. Me.Controls("Button" & i.ToString).BackColor = Color.Blue
    3. Next


    dann werden ja alle Button blau gefärbt und wie kann ich das jetzt machen das jeder eine zufällige Farbe bekommt? (von Blau bis Orange?)

    MFG
    PhoenixBlaster :)
    Leg dir eine Sammlung von ausgewählten Farben in einer typisierten Auflistung (beispielsweise eine List(Of Color)) an und schau dir dann mal die Random-Klasse auf MSDN an. Musst halt den Farben ggf eine Zahl zuordnen, da Random afaik damit arbeitet. Kenn mich da nicht aus.

    Edit:// Jo, wie Rod sagt. Generier dir damit dem Index und weise das dann zu.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Pack die erlaubten Farben in ein Array, generiere Dir einen Zufalls-Index im Bereich 0 bis (Anzahl-1) und gib dem Button die Farbe von diesem Index.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @PhoenixBlaster:

    Dir wurde eine passable Lösung angeboten. Pack die Buttons in eine Liste oder nimm die Control-Collection des jeweiligen Parent. Aber nein, Du nimmst Dir die ranzigste Lösung, die man sich nur vorstellen kann. Man findet keine Controls über den Namen oder sonstigen Ranz. Man weiß, welches Control welches ist und damit gut.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @PhoenixBlaster:: Eigeninitiative?
    Ich weiß, dass es dazu Beispiele im Forum gibt. Finde sie.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    codebeispiel wofür, für die Farben?
    ist ganz einfach!

    irgendwie musst du dir überlegen, wie du das mit den farben anstellst.
    nur die hintergrundfarbe per zufall zu ändern ist keine gute idee! es sollte ja auch die vordergrundfarbe zur hintergrundfarbe passen. oder brauchst du das nicht?
    wenn ja dann würde ich das so machen.
    ich würde mir einfach 2 listen für farben anlegen:

    VB.NET-Quellcode

    1. Private BtnBgFarbe As New List(Of Color)
    2. Private BtnFgFarbe As New List(Of Color)
    3. Sub Init_Farben()
    4. '1
    5. BtnBgFarbe.Add(Color.Transparent)
    6. BTnFgFarbe.Add(Color.Black)
    7. '2
    8. BtnBgFarbe.Add(Color.Green)
    9. BtnFgFarbe.Add(Color.White)
    10. '3
    11. End sub


    das mit einer zufallszahl zu machen ist dann gnz einfach!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dizzy“ ()