FileNotFound wenn ich mit Bild.FromFile()
Ich das Bild verwenden.FromFile(string) - Methode, die in dieser situation:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GVEMO
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
PaintBackground();
}
public void PaintBackground() {
gameBoard.Image = Image.FromFile("gvemoBack.jpg");
}
}
}
Spielbrett ist der name für die pictureBox. Aber als ich dieses Programm startete, bekomme ich die exception FileNotFound. Bild ist im Haupt-Verzeichnis (Verzeichnis, Ordner bin,Klassen,Eigenschaften etc.) Ich versuche, kopieren Sie dieses Bild in allen Projekt-Verzeichnisse, aber Ausnahme bleiben. In welches Verzeichnis muss das Bild oder was ich falsch mache? Ich benutze VS2012 und .NET framework version 4.5. Thx
Alle von der Antwort so weit richtig sind: die
Das ist, was ich sagte. Plus ich habe die Unterscheidung zwischen Arbeitsverzeichnis und Pfad der ausführbaren Datei richtig. 😉
Bah, zu viele Antworten überschwemmungen in auf einmal. Ich müssen zu halten mit Fragen, die ein paar Stunden alt! Nicht in der Lage zu verfolgen, wo die Suche beginnt für unqualifizierte Pfade ist genau der Grund, warum Sie verwenden sollten Ressourcen statt.
gvemoBack.jpg
Bild offensichtlich nicht vorhanden ist, wo die app ist auf der Suche nach es. Aber man sollte wirklich überspringen all das und binden Sie Ihr Bild in der Anwendung als Ressource. Dann geben Sie den code würde einfach laden Sie die Ressource. Es werde immer verfügbar sein, unabhängig davon, wo sich die ausführbare Datei verschoben wird.Das ist, was ich sagte. Plus ich habe die Unterscheidung zwischen Arbeitsverzeichnis und Pfad der ausführbaren Datei richtig. 😉
Bah, zu viele Antworten überschwemmungen in auf einmal. Ich müssen zu halten mit Fragen, die ein paar Stunden alt! Nicht in der Lage zu verfolgen, wo die Suche beginnt für unqualifizierte Pfade ist genau der Grund, warum Sie verwenden sollten Ressourcen statt.
InformationsquelleAutor Ondřej Ryška | 2013-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Bild muss sich im aktuellen Arbeitsverzeichnis. Beim Start in diesem Verzeichnis starten Sie Ihre Anwendung aus, kann dies das Verzeichnis, wo die ausführbare Datei befindet (muss aber nicht sein). Beachten Sie, dass das Arbeitsverzeichnis ändern können!
Anstatt über einen Pfad-ich schlage vor, Sie verwenden einen anderen Mechanismus. Das aktuelle Arbeitsverzeichnis festgelegt werden kann, auf etwas anderes, wenn Sie ein
FileOpenDialog
zum Beispiel. So würden Sie besser dran, mit einer Ressource oder einer Einstellung für das Verzeichnis, in dem sich die Bilder befinden.Du hast Recht, David, ich mache die Aussage
Das ist immer noch nicht richtig. Relative Pfade sind relativ zum aktuellen Verzeichnis, auch Arbeitsverzeichnis.
Sie können auch die details Stimmen. So wie es da steht, haben wir eine Vielzahl von Antworten, die sind technisch falsch. Das ist nicht sehr hilfreich.
Sie sind voll und ganz willkommen, mit Ihren Kommentaren, möchte ich auch bemühen um Perfektion und nicht wie irreführende Antworten... Danke
InformationsquelleAutor jdehaan
Stellen Sie sicher, dass Ihre Datei ist sichtbar im Projektmappen-explorer. Wenn nicht, klicken Sie auf die
Show All Files
- Schaltfläche im solution-explorer mit der rechten Maustaste auf das Bild, und klicken Sie auf "Include In Project".Wenn die Datei sichtbar ist, dann stellen Sie sicher, dass das Bild kopiert wird, um die Ausgabe-Verzeichnis, indem Sie mit der rechten Maustaste auf das Bild im Projektmappen-explorer, wählen Sie Eigenschaften, und sicherstellen, dass die
Copy to Output Directory
option aufCopy if newer
oderCopy always
.InformationsquelleAutor Jurgen Camilleri
Da Sie einen relativen Pfad, das Bild muss sich im Arbeitsverzeichnis. Wenn du eine ausführbare Datei starten, sofern Sie nichts anderes angeben, wird das Arbeitsverzeichnis ist das Verzeichnis in dem die ausführbare Datei befindet. Klar das Bild ist nicht da.
Da kann es schwer sein, extert Kontrolle über das Arbeitsverzeichnis, vor allem in einer GUI-app, ist es meist besser, geben Sie einen vollständigen absoluten Pfad anstatt eines relativen Pfades. Zum Beispiel:
Jedoch weit besser für Ihr Szenario wäre, das Bild als Ressource und so machen Sie Ihre ausführbare Datei selbst enthalten. Dann Sie müssen sich keine Gedanken über details wie sicher, dass die Bilder landen im gleichen Verzeichnis wie die ausführbare Datei.
bin\Debug
? Was passiert, wenn ich es verschieben? Ich denke, man könnte mitApplication.ExecutablePath
in Verbindung mit einem relativen Pfad.Ich habe nicht gesagt, codieren. Ich meinte damit eine volle Pfad dynamisch, z.B. mit Path.Kombinieren und Anwendung.ExecutablePath.
InformationsquelleAutor David Heffernan
Als jdehaan schon gesagt, das Bild sollte (in der Regel) werden im gleichen Verzeichnis mit der ausführbaren Datei. Jener ist wahrscheinlich
bin\Debug
in Ihrem Fall.Ist dies ein statisches Bild könnte man auch einbinden in Ihre Baugruppe. Blick auf Einbetten von Bild-Ressourcen in einem Projekt.
InformationsquelleAutor Patko
Bitte stellen Sie sicher, das Bild ist im selben Verzeichnis wie die ausführbare Datei der Anwendung.
InformationsquelleAutor aguyngueran
Wenn Sie keinen Pfad angeben, wird das aktuelle Verzeichnis verwendet wird.
Können Sie entweder einen relativen Pfad verwenden:
oder einem absoluten Pfad sind:
oder ändern Sie das Verzeichnis vor dem Programmstart oder während Ihrer Ausführung (Sprache/Plattform abhängige Lösung)
InformationsquelleAutor