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张照片里继续随机显示图片,而不会出现错误。望各位高手给于指点指点!谢谢您了~~~谢谢您!

解决方案 »

  1.   

    这也不难, 每次都统计一下你的images目录。
      

  2.   

    想偷懒得话,try一下,出现异常就重新生成随机数不就行了。
      

  3.   

    int amount=7
    一旦出现异常amount--
    读入for(int i=num;i<7;i++){…………}//修改文件名
    重新生成随机数
      

  4.   

    先统计该目录下有几张图片文件。然后随即读取3张图片使label1-label3的背景产生变化就可以了。
      

  5.   

    bool exist = false;
    while(list.Contains(num) && exist)
      {
      num = numrandom.Next(1, 7);
    exist = File.Exists(Directory.GetCurrentDirectory() + "\\images\\die" + num + ".png");
      }
      

  6.   

    我觉得这样比较好些:
    判断文件是否存在,如果存在就执行
    Image.FromFile(Directory.GetCurrentDirectory() + "\\images\\die" + num + ".png");如果不存在就用一个其它图片代替,例如一个error图片
    Image.FromFile(Directory.GetCurrentDirectory() + "\\images\\error.png");
      

  7.   

    各位大虾~~~
    我已经找到了很好很好的方法了~~~
    谢谢各位的出谋献策~~
    谢谢您们了~~~现在也跟大家分享一下!再加个判断条件,判断文件是否存在:System.IO.File.Exists(文件路径):
    while(list.Contains(num)||!System.IO.File.Exists(Directory.GetCurrentDirectory() + "\\images\\die" + num + ".png"))
      {
      num = numrandom.Next(1, 7);
      } 
      

  8.   

    用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]);
      }
      

  9.   

    再加个判断条件,判断文件是否存在:System.IO.File.Exists(文件路径)对头
      

  10.   

    先加载图片然后随即数的界限判断为[1,ImageList的长度]切忌界限判断不要用数字写死,就算是一个常数也应该int count = 10;        //声名变量,以后改起来比较简单
    for(int i=0;i<count;i++)