vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Variable in Objektnamen verwenden 
Autor: Code_mancer
Datum: 28.03.11 08:13

Ja genau, das geht schon in die richtige Richtung. Du musst halt nur schauen, wie du genau die Controls, die du auch gemeinsam ansprechen willst, in diese Collection rein bekommst. JangoFs Beispiel ist da der Ansatz, den du ausarbeiten könntest. Jedoch würde ich die ganze Vergleichsarbeit in den Programmstart packen, z.B. ins Form_Load oder im New() der Form, nach dem InitializeComponent.

Public Class Form1
    Private mlstLabels As List(Of Label) = Nothing
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        mlstLabels = New List(Of Label)
 
        For intIndex As Integer = 0 To Panel1.Controls.Count - 1
            If (TypeOf Panel1.Controls(intIndex) Is Label) Then
                mlstLabels.Add(CType(Panel1.Controls(intIndex), Label))
            End If
        Next
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        For intIndex As Integer = 0 To mlstLabels.Count - 1
            mlstLabels(intIndex).Text = "Hallo"
        Next
    End Sub
End Class
Im Prinzip geht dein Controls(name as string) einen ähnlichen Weg, nur dass die Methode diesen Namen immer erst 'suchen' muss, was unnötig Zeit frisst (und ziemlich unschön anmutet - Stringvergleiche sind böse). Über die hier vorgeschlagene Methode, sprichst du die Controls direkt über ihre Referenz an.

--------------------

Ich habe keine besondere Begabung, sondern bin nur leidenschaftlich neugierig.
- Albert Einstein

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Variable in Objektnamen verwenden 
Autor: Rohabu
Datum: 24.03.11 11:22

Hallo zusammen,

ich stehe gerade völlig auf dem Schlauch.

Ich möchte eine Aktion auf mehrere Objekte anwenden und dafür eine Schleife verwenden. Im Beispiel möchte ich 30 Steuerelemente in einer Schleife durchlaufen.

Mein Bespiel:

vbnet Code:

For i = 1 To 30
Label + i + .Text = System.Net.Dns.GetHostEntry(Label + i + .Text).HostName)
Next
oder

For i = 1 To 30
Label(i).Text = System.Net.Dns.GetHostEntry(Label(i).Text).HostName)
Next
So funktioniert der Code nicht. Wie kann ich denn im Objektnamen eine Variable verwenden?

Vielen Danke für jeden Tip oder Fingerzeig!

Gruß
Rolf
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable in Objektnamen verwenden 
Autor: Nils Christian
Datum: 24.03.11 13:45

For i = 1 To 3
Controls("Label" & i).Text = ....
Next

Ich arbeite mit:
Windows 10 Professional 64-bit * Visual Basic 2010 Express

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable in Objektnamen verwenden 
Autor: Code_mancer
Datum: 25.03.11 14:21

Ich persönlich würde mir die Controls eher in eine Collection/Liste packen und diese dann durchlaufen. Finde die Möglichkeit, Controls über einen String anzusprechen eher unschön, auch wenn meine Methode ein bisschen mehr Schreibarbeit ist.

--------------------

Ich habe keine besondere Begabung, sondern bin nur leidenschaftlich neugierig.
- Albert Einstein

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable in Objektnamen verwenden 
Autor: Rohabu
Datum: 26.03.11 17:30

@Nils
Danke für das Codebeispiel, funktioniert technisch einwandfrei und hilft mir schonmal weiter

@Code_mancer
Ich bin zwar noch ziemlicher Neuling in VB.NET aber gerade deshalb daran interessiert möglichst saubere Programmiermethoden zu lernen.
Meinst du mit einer Controls-Collection etwas wie in dem Beispiel hier?
Falls ja, würde ich dann eine Collection aller Controls (Im Beispiel als VB6 verhalten benannt) erstellen und dann diese gesamte Collection durchlaufen und meine benötigten Controls abfragen?

Auf mein Beispiel bezogen schwebt mir jetzt folgender P-Code vor:

For i = 1 To 30
For Each ctl As Control In CollectedControls(Me)
 - Wie würde ich jetzt hier die Zählervariable unterbringen um auf das _
   jeweilige Objekt zuzugreifen? -
End For
Next
Oder denke ich einfach zu kompliziert und es gibt eine einfachere Möglichkeit?

Danke für eure Hilfe!
Gruß
Rolf
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Variable in Objektnamen verwenden 
Autor: JangoF
Datum: 26.03.11 18:43

Du könntest deine Label auch in ein Panel packen und dann mit der Schleife unten durchgehen.
For Each c As Control In Me.Panel1.Controls
   If TypeOf c Is Label Then
      Dim l As Label = CType(c, Label)
      l.Text = "xyz"
   End If
Next
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel