——急需解决!不解决就要被炒鱿鱼了!各位高手指点指点我———

shenzhentt 2010-04-12 06:08:55
private void button1_Click(object sender, EventArgs e)
{
DisplayDie(label1);
DisplayDie(label2);
DisplayDie(label3);
}
private Random numrandom = new Random();
private List<int> list=new List<int>();
private void DisplayDie(Label label)
{
int num = numrandom.Next(1, 7);
while(list.Contains(num))
{
num = numrandom.Next(1, 7);
}
list.Add(num);
label.Image = Image.FromFile(Directory.GetCurrentDirectory() + "\\images\\die" + num + ".png");
}




各位高手您好;

以上代码是实现点击button1按钮label1-label3的背景图片随机发生变化,现在本人的问题是如果我在images里删了1或2张图

片(images里有共6张图片),程序还能在剩下的4张照片里继续随机显示图片,而不会出现错误。望各位高手给于指点指点!

谢谢您了~~~

谢谢您!


...全文
222 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
名字随便取 2010-04-13
  • 打赏
  • 举报
回复
恭喜贺喜
assky124 2010-04-13
  • 打赏
  • 举报
回复
先加载图片

然后随即数的界限判断为[1,ImageList的长度]

切忌界限判断不要用数字写死,就算是一个常数也应该

int count = 10; //声名变量,以后改起来比较简单
for(int i=0;i<count;i++)
shang123guan 2010-04-13
  • 打赏
  • 举报
回复
再加个判断条件,判断文件是否存在:System.IO.File.Exists(文件路径)

对头
ctwei86 2010-04-13
  • 打赏
  • 举报
回复
用Directory.GetFiles(path);可以得到某目录下所有的文件名数组。
这样可以先得到图片文件夹的所有的文件名数组,然后从这个数组里面随机的进行抽取。

private void button1_Click(object sender, EventArgs e)
{
DisplayDie(label1);
DisplayDie(label2);
DisplayDie(label3);
}
private Random numrandom = new Random();
//private List<int> list=new List<int>();
//获取目录下所有的图片
private string[] imgs = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\images\\");
private void DisplayDie(Label label)
{
int num = numrandom.Next(0, imgs.Length);
//while(list.Contains(num))
//{
//num = numrandom.Next(0, imgs.Length);
//}
//list.Add(num);
label.Image = Image.FromFile(imgs[num]);
}
anguslaigz 2010-04-13
  • 打赏
  • 举报
回复
先判断一下文件是否存在比较好点
codeingsky 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shenzhentt 的回复:]

各位大虾~~~
我已经找到了很好很好的方法了~~~
谢谢各位的出谋献策~~
谢谢您们了~~~



现在也跟大家分享一下!

再加个判断条件,判断文件是否存在:System.IO.File.Exists(文件路径):
while(list.Contains(num)||!System.IO.File.Exists(Directory.GetCurrentDirectory()……
[/Quote]


顶下,支持!
lfzucc 2010-04-13
  • 打赏
  • 举报
回复
祝贺,祝贺
hangang7403 2010-04-13
  • 打赏
  • 举报
回复
祝贺楼主
shenzhentt 2010-04-12
  • 打赏
  • 举报
回复
各位大虾~~~
我已经找到了很好很好的方法了~~~
谢谢各位的出谋献策~~
谢谢您们了~~~



现在也跟大家分享一下!

再加个判断条件,判断文件是否存在:System.IO.File.Exists(文件路径):
while(list.Contains(num)||!System.IO.File.Exists(Directory.GetCurrentDirectory() + "\\images\\die" + num + ".png"))
{
num = numrandom.Next(1, 7);
}
pojianbing 2010-04-12
  • 打赏
  • 举报
回复
我觉得这样比较好些:
判断文件是否存在,如果存在就执行
Image.FromFile(Directory.GetCurrentDirectory() + "\\images\\die" + num + ".png");

如果不存在就用一个其它图片代替,例如一个error图片
Image.FromFile(Directory.GetCurrentDirectory() + "\\images\\error.png");
zhujiazhi 2010-04-12
  • 打赏
  • 举报
回复
bool exist = false;
while(list.Contains(num) && exist)
{
num = numrandom.Next(1, 7);
exist = File.Exists(Directory.GetCurrentDirectory() + "\\images\\die" + num + ".png");
}
doubleu2005 2010-04-12
  • 打赏
  • 举报
回复
每次统计图片张数,小于3就给提示,大于3就随即读取
shashengduguzhe 2010-04-12
  • 打赏
  • 举报
回复
先统计该目录下有几张图片文件。然后随即读取3张图片使label1-label3的背景产生变化就可以了。
coolisher 2010-04-12
  • 打赏
  • 举报
回复
int amount=7
一旦出现异常amount--
读入for(int i=num;i<7;i++){…………}//修改文件名
重新生成随机数
一只熊猫 2010-04-12
  • 打赏
  • 举报
回复
想偷懒得话,try一下,出现异常就重新生成随机数不就行了。
cqq 2010-04-12
  • 打赏
  • 举报
回复
这也不难, 每次都统计一下你的images目录。
tigerleq 2010-04-12
  • 打赏
  • 举报
回复
先判断文件存在不
不存在
在随机
或者
随机图片从目录中读名字,只要读出了来,挂起,想删都删不掉

110,533

社区成员

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

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

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