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)
        {

        }
    }
}
4

4 に答える 4

1

あなたが何を求めているのか、何を達成しようとしているのかはわかりませんが、すべての名前を表示したい場合は、 foreach ループを次のように変更できます。

foreach (FileInfo file in dir.GetFiles())
    textBox1.Text = textBox1.Text + " " + file.Name; 
于 2013-08-14T07:19:35.347 に答える
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)
        {

        }
    }
}
于 2013-08-14T08:54:35.363 に答える
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(); 
于 2013-08-14T07:27:04.377 に答える