// 这个是在页面的aspx.cs中写的  
while(i<Ds_.Tables[0].Rows.Count)
                 {
                     
                     Color_ = Com.Get_Color();
     Str=Str+Color_ ;
}///Com类中的随机颜色方法
        #region  随即颜色
        public static String Get_Color()
        {
            //构造颜色数组
            char[] Char_={'0','1','2','3','4','5','6','7','8','9','A','B','C','D'
                         ,'E','F'};
            Random Roll = new Random();
            Roll.Next(0,16);
            String Color = Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString();
            return Color;
        }
        #endregion 
在调试状态中 循环后后,Color_的值是变化叠加的
但直接运行页面,Color_的值无变化。请高手指点

解决方案 »

  1.   

    调试看看Ds_.Tables[0]是不是只有1行数据
    造成while只循环了一遍
      

  2.   

    这个疑问以前有人问过了
    http://www.jb51.net/article/17406.htm
      

  3.   

    如果你不介意连续2次刷新颜色重复可以简单改下,用循环次数做种子Color_ = Com.Get_Color(i); 
    public static String Get_Color(int i) 
            { 
                //构造颜色数组 
                char[] Char_={'0','1','2','3','4','5','6','7','8','9','A','B','C','D' 
                            ,'E','F'}; 
                Random Roll = new Random(i); 
                Roll.Next(0,16); 
                String Color = Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString(); 
                return Color; 
            } 
      

  4.   

    更彻底的办法是只用一个Random // 这个是在页面的aspx.cs中写的  
    Random Roll = new Random(); 
    while(i <Ds_.Tables[0].Rows.Count) 
                    { 
                        
                        Color_ = Com.Get_Color(Roll ); 
        Str=Str+Color_ ; 
    } ///Com类中的随机颜色方法 
            #region  随即颜色 
            public static String Get_Color(Random Roll) 
            { 
                //构造颜色数组 
                char[] Char_={'0','1','2','3','4','5','6','7','8','9','A','B','C','D' 
                            ,'E','F'}; 
                
                Roll.Next(0,16); 
                String Color = Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString() + Char_[Roll.Next(0, 16)].ToString(); 
                return Color; 
            } 
            #endregion 
      

  5.   

    正解应该是Random必须在循环外实例化。