aline234 Geschrieben 18. September 2008 Geschrieben 18. September 2008 (bearbeitet) Hallo, ich habe bei uns im Haus die Stelle gewechselt und fummle mich nach 1,5 Jahren SAP nun in VB.NET ein. Momentan bastel ich mir kleine Übungsprogramme um einfach wieder das Feeling dafür zu bekomme. Ich stehe nun aber vor einem Problem: Ich erstelle dynamisch zur Laufzeit eine undefinierte Anzahl Label auf einer Form. Diese Label sollen sich auf bestimmten Bahnen bewegen (links nach rechts, oben nach unten etc). Nun bräuchte ich ja für jedes erzeugte Label einen Timer. Dass ich die Timer ebenso wie die Label dynamisch erzeugen kann weiß ich, aber was mache ich mit dem Tick-Event? Dort frage ich auch die Positionen etc ab und steuere dementsprechend die Label. Ich steh da grade auf dem Schlauch. Kann mir jemand einen Denkanstoß geben? Aline Edit: Jaja, den Text an sich hab ich kontrolliert, aber die Überschirft nich... Kann mal bitte ein Mod den Buchstabensalat im Wort "dynamische" korrigieren? Bearbeitet 18. September 2008 von aline234 Doofheit... Zitieren
TDM Geschrieben 18. September 2008 Geschrieben 18. September 2008 Willst du die Labels asynchron bewegen? Sonst reicht ein Timer. Zitieren
aline234 Geschrieben 18. September 2008 Autor Geschrieben 18. September 2008 die label sollen sich alle unabhängig voneinander, sich auch in verschiedene richtungen bewegen und an verschiedenen punkten (koordinaten) anders reagieren. Zitieren
Guybrush Threepwood Geschrieben 18. September 2008 Geschrieben 18. September 2008 Du könntest das trotzdem mit einem Timer machen und wenn der ausgelöst wird jedes mal prüfen welches Label sich nun wie bewegen soll... Zitieren
aline234 Geschrieben 18. September 2008 Autor Geschrieben 18. September 2008 hm also irgendwie kapier ich das grad nich so ganz... lbl_auto = New Windows.Forms.Label With lbl_auto .Location = New Drawing.Point(xpos, ypos) .Width = 10 .Height = 10 .BorderStyle = BorderStyle.FixedSingle .Name = CType(anzahl, String) End With Me.Controls.Add(lbl_auto) so erstelle ich immer ein neues label (bei button.Click) momentan habe ich einen timer, in dem ich die position eines labels verändere. wie kann ich denn da jetzt die verschiedenen label unterscheiden? ich weiß ja nicht, wie viele es insgesamt werden. Zitieren
Guybrush Threepwood Geschrieben 18. September 2008 Geschrieben 18. September 2008 Entweder durchsuchst du Me.Controls nach deinen Labels oder du erstellst dir zusätzlich einfach eine Collection in die du die auch alle mit aufnimmst. Zitieren
aline234 Geschrieben 18. September 2008 Autor Geschrieben 18. September 2008 ich muss also die collection durchschleifen und bei jedem label herausfinden, in welche richtung es eigentlich gehen soll und dann dementsprechend den kurs berechnen. richtig so? dann müsste ich ja dem label eine neue eigenschaft "richtung" oder sowas geben. dafür müsste ich ja mein eigenes label control anlegen... :confused: geht das nich auch irgendwie einfacher? Zitieren
Guybrush Threepwood Geschrieben 18. September 2008 Geschrieben 18. September 2008 Wenn du das nicht anhand irgendeiner Eigenschaft des Labels sehen kannst könntest du zum Beispiel ienfach eine Klasse erstellen die das Label und die Richtung (und alle weiteren benötigten Infos) enthält und diese dann in der Collection speichern. Also in C# wäre das so in der Art: enum Direction { Top, Right, Down, Left }; class LabelInfo { public Label Label { get; set; } public Direction Direction { get; set; } } List<LabelInfo> Labels = new List<LabelInfo>(); [/PHP] Zitieren
aline234 Geschrieben 18. September 2008 Autor Geschrieben 18. September 2008 okay, das werd ich so mal auprobieren (heute aber nicht mehr, denn ich mach gleich feierabend ). vielen dank erstmal Zitieren
Argbeil Geschrieben 19. September 2008 Geschrieben 19. September 2008 Ich würde auch nur einen Timer nehmen. Abgesehen davon kannst du das Event mit: AddHandler Obj.Ev_Event, AddressOf EventHandler verdrahten. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.