Entwickler-Ecke

WinForms - Bild Datei in Picturebox mit Textfeld


c#noob - Fr 03.02.12 13:13
Titel: Bild Datei in Picturebox mit Textfeld
Hallo ich habe ein kleines Programm geschrieben durch hilfe auch von anderen.

Leider bin ich auf ein Problem gestoßen,

ich möchte gerne eine Bilddatei in einer Picturebox ausgeben.Die Bilddateien sind auf einen http webspace.

Das rohe Programm läuft wenn ich 1 Bild als festen Wert vorgebe.

Ich möchte aber das der http pfad fest ist und dann durch den datei namen in einer textbox hinzugefügt wird und dann das Bild geladen wird.

Als Beispiel:

Quelltext
1:
http://festerserver/+texteingabe+.jpg                    

dann der Aufruf für die Picturebox.Lokal habe ich das hin bekommen durch Hilfe aber der Weg wie Lokal funktioniert leider nicht.

Anbei mein Code

C#-Quelltext
1:
2:
3:
4:
WebRequest req = WebRequest.Create("http://server/{0}.jpg", textBox2.Text);
Stream stream = req.GetResponse().GetResponseStream();
Image img = Image.FromStream(stream);
this.pictureBox1.Image = img;


Danke

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Fr 03.02.12 13:28

Hallo und :welcome:

benutze zum Zusammenbauen des Pfades String.Format [http://msdn.microsoft.com/de-de/library/system.string.format.aspx] bzw. Path.Combine [http://msdn.microsoft.com/de-de/library/dd781134.aspx].
Und speziell für Internet-Adressen gibt es die Uri-Klasse [http://msdn.microsoft.com/de-de/library/system.uri.aspx].

Und den so zusammengestellten Pfad übergibst du dann der WebRequest.Create()-Methode.


c#noob - Fr 03.02.12 13:36

danke für deine netten grüße.

ok also muss ich wie lokal einen pfad zusammen bauen mit string format.

Code:


Quelltext
1:
2:
3:
4:
5:
       string Path2 = string.Format("http://Server/{0}.jpg", textBox2.Text);
       WebRequest req = WebRequest.Create("Path2");
       Stream stream = req.GetResponse().GetResponseStream();
       Image img = Image.FromStream(stream);
       this.pictureBox1.Image = img;


Plus das ich für die Serveradresse einen uri pfad angabe machen muss?
das mit dem uri da steige ich überhaupt noch nicht durch

so das im endeffekt es dann so (logisch) aussehen muss:?



Quelltext
1:
2:
3:
4:
5:
6:
    
       string Path2 = string.Format("uripfad/{0}.jpg", textBox2.Text);
       WebRequest req = WebRequest.Create("Path2");
       Stream stream = req.GetResponse().GetResponseStream();
       Image img = Image.FromStream(stream);
       this.pictureBox1.Image = img;


Th69 - Fr 03.02.12 13:49

Hallo,

dein erster Ansatz ist richtig, nur daß du natürlich dann den Pfad als Variable übergeben mußt, d.h.

C#-Quelltext
1:
2:
string path = string.Format("http://Server/{0}.jpg", textBox2.Text);
WebRequest req = WebRequest.Create(path);

Die Uri-Klasse ist dann nützlich, wenn du verschiedene Darstellungen bzw. Teile daraus benötigst (scheint bei dir aber z.Z. nicht der Fall zu sein, da der Server ja anscheinend fest ist).

P.S. nur als Hinweis für andere Leser: Crosspost, s. http://www.c-plusplus.de/forum/p2176026#2176026


c#noob - Fr 03.02.12 13:57

erledigt ,hat jetzt geklappt


Vielen Dank th69!!!!!


c#noob - Fr 03.02.12 14:28

Ach Programmieren :)


so nun klappt alles so wie ich es möchte, aber ich hab einen Fehler gemacht.Ich habe nicht daran gedacht wenn die Datei nicht da ist.
Dann stürzt das Programm ab.

Wie fange ich das am besten ab.

Hab mir das Beispiel vom lokalen dafür wieder angeschaut, da wurde es mit einer if, else schleife abgefangen.

Logisch stellt es für mich wieder so da:

öffne den webrequest
schaue nach der datei
öffne sie

nun müsste aus meiener sicht vor den öffnen die schleife rein

if ist die Datei vorhanden, dann zeige sie an
else gebe eine messagebox datei nicht vorhanden

ist das richtig so?


Th69 - Fr 03.02.12 14:35

Hallo nocheinmal,

ich denke, da wird dann wohl eine Exception geworfen und diese müßtest du dann mittels try...catch abfangen.


c#noob - Fr 03.02.12 14:42

mein gott, :)

schaue ich mir aber gleich mal an


Und dank deines Tips (wieder einmal) habe ich es hinbekommen.


*gibt*th69*ein*bier*aus*

DANKE