菜鸟求救 !为什么显示两次图片

qq_20690265 2015-09-21 11:45:34

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace QianMingForm
{
public partial class Photo : Form
{
private List<string> tifNames = new List<string>();
private int index;
public Photo()
{
InitializeComponent();
}
private void Photo_Shown(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
string filename = string.Format(@"{0}\Data\", Environment.CurrentDirectory);
DirectoryInfo TheFolder = new DirectoryInfo(filename);//文件路径
for (int i = 0; i < TheFolder.GetFiles().Length; i++)//遍历文件夹
{
if (TheFolder.GetFiles()[i].Length > 0 && TheFolder.GetFiles()[i].Extension == ".png")//或者jpg,png 文件大小要大于0且是图片文件
{
Image image = Image.FromFile(TheFolder.GetFiles()[i].DirectoryName + "\\" + TheFolder.GetFiles()[i].Name); //获取文件
tifNames.Add(TheFolder.GetFiles()[i].Name);//添加文件名
imageList2.Images.Add(image);//添加图片
}
}
//初始化设置
this.listView1.View = View.LargeIcon;
this.listView1.LargeImageList = this.imageList2;
//开始绑定
this.listView1.BeginUpdate();
for (int i = 0; i < tifNames.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
//lvi.Text = tifNames[i];//显示文件名
this.listView1.Items.Add(lvi);
}
this.listView1.EndUpdate();
}
private void but_close_Click(object sender, EventArgs e)
{
this.Close();
}

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{

string filename = string.Format(@"{0}\Data\", Environment.CurrentDirectory);
if (this.listView1.SelectedItems.Count == 0)
return;
index = this.listView1.SelectedItems[0].Index;
//MessageBox.Show(tifNames[index]);
this.pictureBox1.Image = Image.FromFile(filename + "\\" + tifNames[index]);

}
}
}



文件夹里只有3张图片,怎么显示出来两次
...全文
172 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_20690265 2015-09-22
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 qq_20690265 的回复:]
[quote=引用 1 楼 duanzi_peng 的回复:]
加断点 调试 看 tifNames.Count 是多少,不对就是那个地方的判断条件有问题 了。

谢谢指点 它的值等于6了 [/quote]
那就是:

for (int i = 0; i < TheFolder.GetFiles().Length; i++)//遍历文件夹
{
if (TheFolder.GetFiles()[i].Length > 0 && TheFolder.GetFiles()[i].Extension == ".png")//或者jpg,png 文件大小要大于0且是图片文件
{
Image image = Image.FromFile(TheFolder.GetFiles()[i].DirectoryName + "\\" + TheFolder.GetFiles()[i].Name); //获取文件
tifNames.Add(TheFolder.GetFiles()[i].Name);//添加文件名
imageList2.Images.Add(image);//添加图片
}
}
这块有问题了。add 了 6次,还继续调试,看看各个变量得的值是否正确。[/quote]

引用 4 楼 u014752905 的回复:


using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace QianMingForm
{
public partial class Photo : Form
{
private List<string> tifNames = new List<string>();
private int index;
public Photo()
{
InitializeComponent();
}
private void Photo_Shown(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
string filename = string.Format(@"{0}\Data\", Environment.CurrentDirectory);
DirectoryInfo TheFolder = new DirectoryInfo(filename);//文件路径
for (int i = 0; i < TheFolder.GetFiles().Length; i++)//遍历文件夹
{
if (TheFolder.GetFiles()[i].Length > 0 && TheFolder.GetFiles()[i].Extension == ".png")//或者jpg,png 文件大小要大于0且是图片文件
{
Image image = Image.FromFile(TheFolder.GetFiles()[i].DirectoryName + "\\" + TheFolder.GetFiles()[i].Name); //获取文件
tifNames.Add(TheFolder.GetFiles()[i].Name);//添加文件名
imageList2.Images.Add(image);//添加图片
}
}
//初始化设置
Console.WriteLine(listView1.items.count);
this.listView1.View = View.LargeIcon;
this.listView1.LargeImageList = this.imageList2; 已经加载了
Console.WriteLine(listView1.items.count);
//开始绑定
this.listView1.BeginUpdate();
for (int i = 0; i < tifNames.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
//lvi.Text = tifNames[i];//显示文件名
Console.WriteLine(listView1.items.count);
this.listView1.Items.Add(lvi); 又加载一次
Console.WriteLine(listView1.items.count);
}
this.listView1.EndUpdate();
}
private void but_close_Click(object sender, EventArgs e)
{
this.Close();
}

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{

string filename = string.Format(@"{0}\Data\", Environment.CurrentDirectory);
if (this.listView1.SelectedItems.Count == 0)
return;
index = this.listView1.SelectedItems[0].Index;
//MessageBox.Show(tifNames[index]);
this.pictureBox1.Image = Image.FromFile(filename + "\\" + tifNames[index]);

}
}
}



添加些打试试,家里电脑没有装vs,测试不了,你自己也加些打印试试

感谢两位
u014752905 2015-09-21
  • 打赏
  • 举报
回复


using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices; 
namespace QianMingForm
{
    public partial class Photo : Form
    {
        private List<string> tifNames = new List<string>();
        private int index;  
        public Photo()
        {
            InitializeComponent();
        }   
        private void Photo_Shown(object sender, EventArgs e)
        {          
            this.FormBorderStyle = FormBorderStyle.None;
            string filename = string.Format(@"{0}\Data\", Environment.CurrentDirectory);
            DirectoryInfo TheFolder = new DirectoryInfo(filename);//文件路径                    
            for (int i = 0; i < TheFolder.GetFiles().Length; i++)//遍历文件夹
            {
                if (TheFolder.GetFiles()[i].Length > 0 && TheFolder.GetFiles()[i].Extension == ".png")//或者jpg,png 文件大小要大于0且是图片文件
                {
                    Image image = Image.FromFile(TheFolder.GetFiles()[i].DirectoryName + "\\" + TheFolder.GetFiles()[i].Name);    //获取文件                
                    tifNames.Add(TheFolder.GetFiles()[i].Name);//添加文件名
                    imageList2.Images.Add(image);//添加图片
                }
            }
            //初始化设置
Console.WriteLine(listView1.items.count);
            this.listView1.View = View.LargeIcon;
            this.listView1.LargeImageList = this.imageList2; 已经加载了
Console.WriteLine(listView1.items.count);
            //开始绑定
            this.listView1.BeginUpdate();
            for (int i = 0; i < tifNames.Count; i++)
            {
                 ListViewItem lvi = new ListViewItem();
                 lvi.ImageIndex = i;
                 //lvi.Text = tifNames[i];//显示文件名
Console.WriteLine(listView1.items.count);
                 this.listView1.Items.Add(lvi);            又加载一次 
Console.WriteLine(listView1.items.count);
            }
            this.listView1.EndUpdate();
        }   
        private void but_close_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
      
            string filename = string.Format(@"{0}\Data\", Environment.CurrentDirectory);
            if (this.listView1.SelectedItems.Count == 0)
            return;
            index = this.listView1.SelectedItems[0].Index;
            //MessageBox.Show(tifNames[index]);  
            this.pictureBox1.Image = Image.FromFile(filename + "\\" + tifNames[index]);  
          
        }      
    }
}


添加些打试试,家里电脑没有装vs,测试不了,你自己也加些打印试试
  • 打赏
  • 举报
回复
引用 2 楼 qq_20690265 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 加断点 调试 看 tifNames.Count 是多少,不对就是那个地方的判断条件有问题 了。
谢谢指点 它的值等于6了 [/quote] 那就是:

for (int i = 0; i < TheFolder.GetFiles().Length; i++)//遍历文件夹
            {
                if (TheFolder.GetFiles()[i].Length > 0 && TheFolder.GetFiles()[i].Extension == ".png")//或者jpg,png 文件大小要大于0且是图片文件
                {
                    Image image = Image.FromFile(TheFolder.GetFiles()[i].DirectoryName + "\\" + TheFolder.GetFiles()[i].Name);    //获取文件                
                    tifNames.Add(TheFolder.GetFiles()[i].Name);//添加文件名
                    imageList2.Images.Add(image);//添加图片
                }
            }
这块有问题了。add 了 6次,还继续调试,看看各个变量得的值是否正确。
qq_20690265 2015-09-21
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
加断点 调试 看 tifNames.Count 是多少,不对就是那个地方的判断条件有问题 了。
谢谢指点 它的值等于6了
  • 打赏
  • 举报
回复
加断点 调试 看 tifNames.Count 是多少,不对就是那个地方的判断条件有问题 了。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧