[VB.net] Objekte dynamisch via 'String' ansprechen

Phr34k

Mitglied
Hallo,

Und zwar möchte ich x Objekte ansprechen und immer die gleichen Attribute ändern, zum Beipiel so:

Code:
FOR i = 0 to 15
 ("textbox_" & cstr(i)).height = 20
NEXT

Nur bin ich mir nicht im klaren wie ich einen String in ein Object umwandeln kann!?

Vielen Dank im Vorraus,


MfG Phr34k
 
Code:
Control c = this.Controls["button1"];
            if (c != null)
                c.Height = 200;
Wobei this.Controls die Controls-Auflistung deines Forms ist. Gleiches funktioniert bei allen Container-Controls. Also auch bei Panels und Co.

Willst du das beispielsweise auf alle TextBoxen deiner Form anwenden, dann kannst du das so machen:
Code:
foreach (Control c2 in this.Controls)
{
    if (c2.GetType().FullName == "System.Windows.Forms.TextBox")
        c2.Height = 150;
}
 
Code:
        Dim obj As Control
        obj = Controls("web_dummy")
        obj.Url = new_url

ich hab das jetzt so umgesetzt!?
Jetzt kommt der Fehler: .Url is not a member of 'system.windows.forms.control'.
 
Hi

Control hat auch keinen Member namens Url. Den Member gibt's nur beim WebBrowser.
Demnach musst du dein Control casten

C#:
Control ctrl;
ctrl = Controls["webBrowser"];
((WebBrowser)ctrl).Url = "http://www.tutorials.de";
 
Dann schau dir bitte an, wie in VB ein Cast gemacht wird. Was du machen musst, hab ich geschrieben.
Das Control in WebBrowser casten und dann stehen dir auch die Member der Klasse zur Verfügung.
Der Code war nur ein Beispiel. Lesen müsstest du ihn aber schon können. Es ist genau das selbe wie bei dir, abgesehen davon, dass du keinen Cast machst.
 
also mit dem casten geht das nicht so richtig!? Ich caste meinen String als Object, aber deshalb hat er ja auch noch keine Eigenschaft URL.

Im php gehts ja ganz einfach...
PHP:
$("variable" + x)

so in der Art müsste das doch auch gehen!?

Mfg Phr34k
 
Hi

Du sollst nicht den Namen in Object casten sondern das Control spezialisieren, nämlich in WebBrowser. (siehe oben)

Die Controls-Collection gibt dir nur allgemeint ein Instanz von Control zurück. Da du aber einen speziellen Typ von Control brauchst musst du in diesen casten, in WebBrowser.
Falls Casts in VB.NET so funktionieren, dann so:
Code:
Dim obj As Control
obj = Controls("web_dummy")
((WebBrowser)obj).Url = new_url
 
Guten Abend,

So ich habe das in etwa gleiche Problem gehabt. Durch diesen Thread ist mir aber geholfen worden. Doch jetzt steh ich vor einem weiteren Problem:

Ich will einen String den ich einlese zu einem Form Objekt machen um danach eine Form zu "steuern" (.show und so). Doch ich bringe es einfach nicht hin. Das ist der Momentane Code:

Code:
        Dim obj As Form
        obj = ?(tempValue)

        obj.Show()

Dort wo das Fragezeichen ist, weissich nicht was ich davor Setzen soll. Vielen Dank für eure Hilfe

ah ja die Variable "tempValue" ist der String den ich einlese.

Vielen Dank für die Antworten
Mit freundlichen Grüssen
Florian
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück