Autor Beitrag
Chiyoko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 26.02.10 00:35 
Huhu,

ich bin mit meinem projekt jetzt fertig.
Aber meine Pfade werden nicht erkannt und ich komme nicht dahinter...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
// entweder so
this.pictureBox1.ImageLocation = new Bitmap(Path.Combine(Application.StartupPath, (@"Bilder\FF8\Bosse\omegaspecial1.jpg")));

// oder so
this.pictureBox1.ImageLocation = @"Bilder\FF8\Bosse\omegaspecial1.jpg";

Bei erstem bekomme ich einen Error:

"Eine implizite Konvertierung vom Typ "System.Drawing.Bitmap" in "string" ist nicht möglich."

Bei zweiterem findet dieser nach Einbindung meiner Steuerelemente(UserControls die ich in andere UserControls einbinde) nicht.Zumal diese Methode ja unsicher sein soll.Darum ersteres.

Als using directive verwende ich System.IO;

Was kann ich tun?Danke schonmal.


EDIT: Ich stelle gerade fest, das ich nur das "new Bitmap" wegnehmen muss.
Hab ich nicht nachgedacht-.-Aber so sollte es gehen.
c#surfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 42
Erhaltene Danke: 2



BeitragVerfasst: Fr 26.02.10 01:50 
In deinem ersten Fall weist du die Imagelocation zu, d.h. es wird ein Pfad (String) erwartet und kein Bitmap (wie du schon in deinem Edit bemerkt hast).
Oder du lässt das ImageLocation weg, dann wird wirklich ein Image erwartet, sieht also dann so aus:
ausblenden C#-Quelltext
1:
this.pictureBox1 = (Image) new Bitmap(Path.Combine(Application.StartupPath, (@"Bilder\FF8\Bosse\omegaspecial1.jpg")));					


Warum soll deine zweite Möglichkeit unsicher sein?
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 26.02.10 02:15 
Danke trotzdem fuer die Antwort,...ja einiges wird einem nicht gleich auf Anhieb bewusst.

Naja ich moechte die Bilder mit der Exe ausliefern und da habe ich gelesen,
das sich der Pfad immer mal aendert und es zufall sei, wenn die Bilder doch
geladen werden koennen.Darum ging ich auf Nummer sicher.
Und wieder was gelernt;)
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 26.02.10 15:29 
Nun ein weiteres Problem, was mir fast klar war, das es kommen musste.

Ich habe ziemlich viele UserControls.
Diese verschiebe ich in andere userControls.

Die Pfadangaben zu den Bildern sind richtig.
Aber ueber try/catch wird mir beim verschieben gesagt, das die Bilder
nicht gefunden werden koennen.
Und das passiert auch ohne Application.StartupPath.
Damit nicht genug, sie werden noch weiter verschoben in die Mainform.



ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private void UC_Main7_chars_Load(object sender, EventArgs e)
        {
            try
            {
                this.picBoxAries.ImageLocation = Path.Combine(Application.StartupPath, (@"Bilder\FF7\Chars\aeris.jpg"));
            }
            catch (Exception)
            {
                MessageBox.Show("Bild(er) konnte(n) nicht geladen werden.");
            }
        }
c#surfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 42
Erhaltene Danke: 2



BeitragVerfasst: Fr 26.02.10 16:12 
ohne dir bei deinem Problem helfen zu können nur eine kleine Anmerkung:
Lass dir im catch-Teil immer die exception ausgeben. Es könnte ja auch mal ein ganz anderer Fehler - außer der Unauffindbarkeit des Bildes - Ursache für eine Exception sein
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 26.02.10 16:43 
Hallo,

du verschiebst UserControls in UserControls? :gruebel:
Und weiter in MainForm?

Ich glaub das versteht niemand :o

Zum Try/Catch.. da ist es nicht nur gut die Fehlermeldung auszugeben, sondern auch spezifisch abzufangen.

So kannst du zum Beispiel
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
try
{
   this.picBoxAries.ImageLocation = Path.Combine(Application.StartupPath, (@"Bilder\FF7\Chars\aeris.jpg"));
}
catch (FileNotFoundException e)
{
   MessageBox.Show("Bild exisiert nicht. Bitte überprüfen sie den Pfad: " + Path.Combine(Application.StartupPath, (@"Bilder\FF7\Chars\aeris.jpg")));
}
catch (Exception e)
{
   MessageBox.Show("Ein unbekannter Fehler ist aufgedrehten" + Environment.NewLine + "Fehler: " + Environment.NewLine + e.getMessage());
}


Gruß Daniel
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 26.02.10 17:08 
Danke erstmal, werds mir merken:)

Jetzt zu den UserControls.

Hier mal ein Bild meiner Anwendung.

[url=imgbox.de/?img=i2989t171.jpg]user defined image[/url]

UC = UserControl..
nun, links befinden sich alle vorhandenen UCs, die nach Neu erstellen automatisch in der Toolbox landen.
Diese kann ich in weitere UserControls reinziehen.
ich brauche das, um die Unuebersichtlichkeit von Panels zu verhindern und um spaeter
vielleicht noch Daten anzufuegen.(Ein UC kann bis zu 32700~ Pixel gros sein, ein Panel nicht)

Wie man sieht, habe ich ein UC fuer das grafische und ein UC fuer die Daten(Textboxen, LAbel etc) und das 2te UC mit den Daten ziehe ich einfach in das erste grafische UC auf ein Panel.
Und diese beiden zusammengefuegten UC s schriebe ich dann auf ein Mainform, welches als "Start" gesetzt ist...von dort kann ich dann diese UC s umschalten(ueber ein treeview).
Ohne Bilder klappt das ausgezeichnet.

Nun hab ich gerade diese Seite gefunden.
www.wvss-wetzlar.de/...al_csharp_31_001.htm

ich denke mal, das hilft mir sehr viel weiter und ich befasse mich erstmal damit und melde mich spaeter wieder.



EDIT:

[url=imgbox.de/?img=g22752o252.jpg]user defined image[/url]

Ich versteh s nicht, einige gehen, einige nicht...aber bei allen stimmen die Pfade...

EDIT 2:

Ok, muss meine Meinung aendern, mit

"if(File.Exists(@""))"

werfen miralle ein "nicht vorhandenes Bild" aus....
Ist es moeglich, die Pfade ALLE im mainform abzulegen?
Waere zwar etwas komisch aber es werden ja im endeffect
dort Instanzen angelegt und ueber diese muesste das gehen,...
ich probiers mal.


EDIT 3:

GRRRRRRRR...-.-
....ich hab es rausgefunden...der Fehler lag an der einstellung der PictureBox.
Man muss "WaitonLoad" auf "false" setzen...wer soll denn darauf kommen????
Frage geklaert, danke.