从目录中读取图像并将其显示在屏幕上

本文关键字:显示 屏幕 读取 图像 | 更新日期: 2023-09-27 18:27:39

我可以用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)
        {
        }
    }
}

从目录中读取图像并将其显示在屏幕上

我不确定你在问什么,也不确定你试图实现什么,但如果你想查看所有的名称,你可以将foreach循环更改为:

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

根据@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)
        {
        }
    }
}

只需收集所有需要在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(); 

只显示文件名。使用多行文本框

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

如果要显示图像,则需要使用一些数据容器,如ListBoxDataGridView,并为每个图像添加行。