Zum Inhalt springen

C# Syntax gesucht [HILFE]


Empfohlene Beiträge

Geschrieben

Hiho,

ich bin gerade dabei, einen Web Browser zu programmieren. Dazu möchte ich gerne Tabs haben.. mehrere Tabs..


private void buttonNewTab_Click(object sender, EventArgs e)

{

 int iTabCount = 0;


 //Object

 WebBrowser webBrowser = new WebBrowser();


 iTabCount += 1;


 TabPage tabPage = new TabPage();

 this.tabControl1.TabPages.Add(tabPage);

 this.tabControl1.SelectedIndex = iTabCount;

 tabPage.Controls.Add(webBrowser);


 //Settings

 webBrowser.Width = tabPage1.Width;

 webBrowser.Height = tabPage1.Height;

 webBrowser.Name = "webBrowser" + iTabCount;

 tabPage.Name = "tabPage" + iTabCount;

 tabPage.Text = webBrowser.Name;

}

Das klappt wunderbar. Es werden bei jedem Klick ein neuer Tab mit neuem Web Browser Objekt erstellt ( webBrowser1, webBrowser2, webBrowser3,..,..) Nun habe ich eine Textbox "textBoxUrl" in dem ich den gewünschten Url eintippe. Des weiterem benutze ich einen Button, um folgenden Code auszuführen:

private void buttonGoNavigate_Click(object sender, EventArgs e)

{

webBrowser.Navigate(new Uri(textBoxUrl.Text));

}

Für einen Tab mit einem Webbrowser, funktioniert das einwandfrei.... Um mein Problem euch nun zu erläuterten: Ich würde gerne sowas schreiben, sodass der Compiler weis, welchen WebBrowser er navigieren soll -->

private void buttonGoNavigate_Click(object sender, EventArgs e)

{

 ("webBrowser" + this.tabControl1.SelectedIndex).Navigate(new  Uri(textBoxUrl.Text));

}

1. Geht das nicht, weil es ne komplett falsche syntax ist ^^ und

2. Auch wenn es gehen würde, würde der Compiler beim durchgehen des Codes merken, da ja z.b. webBrowser1 oder 2 oder 3 oder 4 noch garnicht erstellt wurde...

Wie soll ich nun das realisieren, sodass ich mit einer Textbox, im zusammenhang mit dem tabControl1.SelectedIndex, das bestimmte WebBrowser objekt navigieren kann?

Auf eine Antwort, würde ich mich freuen!

mfg

Daniel

Geschrieben

Zu deiner Programmierweise und Namensgebung sag ich jetzt mal nix ;)

Wenn ich das richtig sehe/verstehe hast du eine TextBox und ein Navigate Button für alle Tabs oder?

in dem Fall würde ich das dann so machen:



private void buttonGoNavigate_Click(object sender, EventArgs e)

{

    Control[] controlArray = this.Controls.Find("webBrowser" + tabControl1.SelectedIndex, true);


    foreach (Control item in controlArray)

    {

        if (item.Name.Equals("webBrowser" + tabControl1.SelectedIndex))

        {

            ((WebBrowser)item).Navigate(textBoxUrl.Text);

        }

    }

}

Musste gerade selber wieder festellen das es "FindControl" nur in ASP.Net gibt ^^

Theoretisch kann mich sich auch die Schleife sparen und nur das Control Array auf länge prüfen, denn mehr als einmal sollte ein Control mit ein und demselben namen nicht auftauchen. Bin mir allerdings gerade nicht ganz sicher ob das Find nicht auch das Control mit dem Namen webBrowser11 zurückgeben würde weil darin der suchbegriff enthalten ist, deshalb die Schleife mit dem Equal.

das int iTabCount ist aber eigentlich schon ne Klassenvariable oder? Ansonsten setzt du die nämlich mit jedem "buttonNewTab_Click" wieder zurück und es geht garnicht.

Wenn ich dich jetzt falsch verstanden hab, dann musst du es nochmal erklären und die Framework Version nicht vergessen ;)

Geschrieben

Hallo Locotronic,

erstmal vielen Dank für deine Antwort!

Zitat: Wenn ich das richtig sehe/verstehe hast du eine TextBox und ein Navigate Button für alle Tabs oder?

( Ja das ist richtig )

Die int Variable "iTabCount" ist eine Globale. Habe den Code nicht direkt kopiert, da viele Sachen nicht notwenig waren zu posten ( ist wohl in die falsche zeile gekommen :P )

Ich benutze Framework Version 3.5

Ich werde dein Beispiel morgen mal testen und dann hier berichten.

Zwecks meiner Programmierweise und Namensgebung muss ich dazu sagen, dass jeder mal klein angefangen hatt. Doch dann bitte ich dich drum, mir Tipps zu geben, wie ich diese Fehler verbessern kann.. nur so, kann ich aus meinen Fehlern lernen.

MFG

Daniel

Geschrieben

Zwecks meiner Programmierweise und Namensgebung muss ich dazu sagen, dass jeder mal klein angefangen hatt. Doch dann bitte ich dich drum, mir Tipps zu geben, wie ich diese Fehler verbessern kann.. nur so, kann ich aus meinen Fehlern lernen.

Genau das ist der Punkt, ich möchte das nicht unbedingt als Fehler bezeichnen, das ist von Firma zu Firma teilweiße stark unterschiedlich...

Aber ich kann dir ja sagen wie ich das mache ;)

Also eine Typbezeichnung in Variablen mache ich nicht schon alleine das es bei einem Int zu Verwechslungen kommen kann da ein I vor einem Objekt ein Interface bezeichnet und kein Int und Klassenvariablen (Es gibt nur Klassenvariablen in C# und keine globalen Variablen im Vergleich mit z.B. PHP wo es wirklich Globale gibt) und diese fangen bei mir mit einem _ an somit kann man die Klassenvariablen von den Lokalen unterscheiden. usw.

Wenn du das 3.5 Framework benutzt dann würde ich mal schauen ob du nicht mit Linq das gesuchte Objekt abfragen kannst, ich kann grad leider nicht nachschauen da wir hier in der Firma noch das 2.0 Framework einesetzen.

Grüße

Loco

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...