2017-10-19 3 views
0

ich es tun zu tun, wenn ich mehrere Bildpfad in flowayoutpanel stöbern, und klicken Sie auf die Schaltfläche speichern, so wird der gesamte Bildpfad in einem Ordner speichern, mein Problem ist ich kann den Bildpfad durchsuchen und in flowlayoutpanel anzeigen, aber ich weiß nicht, wie man den Bildpfad daraus holt und in den Ordner kopiert, irgendeinen Vorschlag, es zu tun?Wie alle Daten in flowlayout Panel zu bekommen und in den Ordner

* dies ist, wie ich Bild Pfad grasen und in Flowlayoutpanel

private void button1_Click_2(object sender, EventArgs e) 
     { 
      DialogResult dr = this.openFileDialog1.ShowDialog(); 
      if (dr == System.Windows.Forms.DialogResult.OK) 
      { 
       // Read the files 
       foreach (String file in openFileDialog1.FileNames) 
       { 
        // Create a PictureBox. 
        try 
        { 
         Panel panel = new Panel(); 
         PictureBox pb = new PictureBox(); 
         TextBox tb = new TextBox(); 
         Image loadedImage = Image.FromFile(file); 
         pb.Height = 200; 
         pb.Width = 200; 
         pb.Image = loadedImage; 
         pb.SizeMode = PictureBoxSizeMode.StretchImage; 
         tb.Text = openFileDialog1.FileName; 
         //panel.Controls.Add(pb); 
         panel.Controls.Add(tb); 
         panel.Height = 200; 
         panel.Width = 200; 
         flowLayoutPanel1.Controls.Add(panel); 

        } 
        catch (SecurityException ex) 
        { 
         // The user lacks appropriate permissions to read files, discover paths, etc. 
         MessageBox.Show("Security error. Please contact your administrator for details.\n\n" + 
          "Error message: " + ex.Message + "\n\n" + 
          "Details (send to Support):\n\n" + ex.StackTrace 
         ); 
        } 
        catch (Exception ex) 
        { 
         // Could not load the image - probably related to Windows file system permissions. 
         MessageBox.Show("Cannot display the image: " + file.Substring(file.LastIndexOf('\\')) 
          + ". You may not have permission to read the file, or " + 
          "it may be corrupt.\n\nReported error: " + ex.Message); 
        } 


       } 
      } 

private void button2_Click(object sender, EventArgs e) 
{ 

    foreach(TextBox tb in TextBoxes) 
    { 


     File.Copy(tb.Text, dest); 

    } 
} 

Antwort

0

Offensichtlich Sie die Dateinamen irgendwo zu speichern, entweder in einem Textfeld wie Sie haben (obwohl ich empfehlen würde tb.Text=file statt!), Oder Sie verwenden eine separate List<string> (ich würde die letztere empfehlen! Verwenden Sie ein Formular zum Speichern von Dingen ist meistens keine gute Idee).

Um die Dateien zu erhalten, iterieren Sie entweder foreach(Control c in flowLayoutPanel1.Items) und gehen Sie dann die SubControls zu Ihrem Textfeld oder verwenden Sie die separate Liste.

Die Kopie können Sie mit File.Copy(src, dest) tun.

+0

Derzeit haben Sie die FlowPanel mit Panels als Kinder und jedes Panel hat eine Textbox und eine Picturebox (auskommentiert) als ihre Kinder. So wie es jetzt ist, sollte die Textbox das erste Untersteuerelement jedes Panels sein – casiosmu

+0

danke, also wie man den Text im Textfeld flowlayoutpanel in meiner zweiten Taste definiert? – tang

+0

denken Sie bitte: Ihr 'c.Text' wird Ihnen ein leeres Ergebnis geben, natürlich ist es der Text des Panels ... Aber Sie wollen den Text von einem Kind des Panels – casiosmu

Verwandte Themen