从目录中读取图像并将其显示在屏幕上
本文关键字:显示 屏幕 读取 图像 | 更新日期: 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();
如果要显示图像,则需要使用一些数据容器,如ListBox
或DataGridView
,并为每个图像添加行。