2016-08-21 3 views
1

In meiner Windows-Anwendung gibt es eine ListView. Jedes Element in diesem ListView verfügt über einige Unterelemente, von denen eines zum Speichern eines Dateipfads in einem Bild verwendet wird.Wie formatiere ich einen Dateipfad als String mit einem OpenFileDialog?

Wenn ein Element in der ListView ausgewählt wird, wird das Bild in einer PictureBox mit dem folgenden Code aktualisiert;

private void listView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    //check that only one item is selected 
    if (listView1.SelectedItems.Count == 1) 
    { 
     //update the image from the filepath in the SubItem 
     pictureBox1.Image = Image.FromFile(listView1.SelectedItems[0].SubItems[1].Text); 
    } 
} 

Das alles funktioniert gut. Wenn Sie auf die PictureBox klicken, wird jedoch ein OpenFileDialog geöffnet, damit der Benutzer ein Bild auswählen kann. Es ändert dann den SubItem.Text des aktuell ausgewählten Elements in der ListView in den Dateipfad des Bildes, so;

private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    //open a file dialog to chose an image and assign to the SubItem of the selected item 
    openFileDialog1.ShowDialog(); 
    openFileDialog1.FileName = ""; 
    string Chosen_File = ""; 
    Chosen_File = openFileDialog1.FileName; 
    listView1.SelectedItems[0].SubItems[1].Text = Chosen_File; 
} 

Wenn jedoch der Dateipfad zu Chosen_File zugeordnet ist, wird es nicht richtig formatiert, was bedeutet, dass, wenn ich den Artikel wähle ich ein Argument bekommen.

Warum ist der Dateipfad nicht korrekt formatiert, und wie kann ich sicherstellen, dass es bei der Zuweisung zu Choose_File ist?

+2

Dialog Abbrechen der Auswahl des Benutzers zu handhaben müssen sich ändern, wenn Sie die Zeile entfernen, die die Openfile Auswahl aufhebt (IE openFileDialog1.FileName = "") dann wird Ihr Code wie erwartet funktionieren – Steve

+1

Sie müssen auch nicht scotch das Ergebnis durch eine Temp var 'listView1.SelectedItems [0] .SubItems [1] .Text = openFileDialog1.FileName;' – Plutonix

+0

@Plutonix Ich werde das beheben. –

Antwort

2

Sie sollten Ihren Code nicht entfernen Sie die Auswahl aus dem Openfiledialog und Sie auch die Taste auf der

Vielleicht
private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    // Enter the assignment code only if user presses OK 
    if(DialogResult.OK == openFileDialog1.ShowDialog()) 
    { 
     // This is you error 
     // openFileDialog1.FileName = ""; 
     string Chosen_File = openFileDialog1.FileName; 
     listView1.SelectedItems[0].SubItems[1].Text = Chosen_File; 
    } 
} 
+0

Arbeitete perfekt. Auch danke, dass ich daran erinnert wurde, dass ich mich um die Löschung des Nutzers gekümmert habe, hätte ich sonst wahrscheinlich nie dazu gekommen. –

Verwandte Themen