2013-08-14 2 views
0

Я могу связаться с foreach в каталоге, но, из-за работы как стек, я только добираюсь до последней фотографии в каталоге. У меня есть много изображения, начиная 1.jpg до 100.Чтение изображений из каталога и их отображение на экране

namespace deneme_readimg 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      DirectoryInfo dir = new DirectoryInfo("C:\\DENEME"); 

      foreach (FileInfo file in dir.GetFiles()) 
      textBox1.Text = file.Name; 
     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 
    } 
} 
+1

Вы можете сделать 'TextBox1.Text + = file.Name +" «;' и быть более конкретным – Satpal

+2

http://msdn.microsoft.com/en-us/library/system.windows.forms. textboxbase.appendtext.aspx –

+0

@DavidMartin +1, вы должны опубликовать это как ответ (возможно, с небольшим объяснением). –

ответ

0

Как было предложено @LarsKristensen я отправляю мой комментарий как ответ.

Я бы использовал метод AppendText, если только вы не должны добавлять в текстовое поле каждый клик, я бы сначала позвонил Clear.

namespace deneme_readimg 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      DirectoryInfo dir = new DirectoryInfo("C:\\DENEME"); 

      // Clear the contents first 
      textBox1.Clear(); 
      foreach (FileInfo file in dir.GetFiles()) 
      { 
       // Append each item 
       textBox1.AppendText(file.Name); 
      } 
     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 
    } 
} 
1

Я не уверен, что вы спрашиваете, или то, что вы пытаетесь достичь, но если вы хотите, чтобы увидеть все имена, вы можете изменить foreach loop in:

foreach (FileInfo file in dir.GetFiles()) 
    textBox1.Text = textBox1.Text + " " + file.Name; 
0

для отображения только имя файла. Используйте многолинейный TextBox

StringBuilder sb = new StringBuilder(); 
foreach (FileInfo file in dir.GetFiles())  
    sb.Append(file.Name + Environment.NewLine); 

textBox1.Text =sb.ToString().Trim(); 

, если вы хотите, чтобы показать изображения, то вам нужно использовать некоторые datacontainer как ListBox или DataGridView и добавить строку для каждого изображения.

0

Просто соберите все данные, необходимые для вывода в StringBuilder; когда готов опубликовать его:

DirectoryInfo dir = new DirectoryInfo("C:\\DENEME"); 

// Let's collect all the file names in a StringBuilder 
// and only then assign them to the textBox. 
StringBuilder Sb = new StringBuilder(); 

foreach (FileInfo file in dir.GetFiles()) { 
    if (Sb.Length > 0) 
    Sb.Append(" "); // <- or Sb.AppendLine(); if you want each file printed on a separate line 

    Sb.Append(file.Name); 
} 

// One assignment only; it prevents you from flood of "textBox1_TextChanged" calls 
textBox1.Text = Sb.ToString(); 
Смежные вопросы