Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

C# Syntax gesucht [HILFE]

Empfohlene Antworten

Veröffentlicht

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

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 ;)

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.