作者windmax1 (I do my best)
看板C_Sharp
标题[问题] 如何让timer+imagelist随机图不重复?
时间Mon Apr 14 18:19:06 2014
private void timer1_Tick(object sender, EventArgs e)
{
intSpinCount++;
if (intSpinCount <= 20) {
// 转动中;
Random rnd = new Random();
int intIndex = rnd.Next(imageList1.Images.Count);
//0到imageList1.Images.Count随机取一;
2~6省略
pictureBox1.Image = imageList1.Images[intIndex];
2~6省略
} else { // 停止; //随机取值;
Random rnd = new Random();
int myIndex = rnd.Next(imageList1.Images.Count);
//0到imageList1.Images.Count随机取一;
2~6省略
pictureBox1.Image = imageList1.Images[myIndex];
timer1.Enabled = false;
ifSpin = false;
btnAnimateImage.Enabled = true;
btnAnimateImage.Text = "动态切换图片"; }
产生结果如图
http://imgur.com/2AakeZL
想要让六个号码彼此之间不重复,GOOGLE研究半天研究不出个所以
拜托高手指点一下方向!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.11.129.171
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1397470749.A.5ED.html
※ 编辑: windmax1 (124.11.129.171), 04/14/2014 18:23:42
1F:→ ssccg:1 建一个所有可能值的list,随机shuffle後依序取 04/14 20:04
2F:→ ssccg:2 记录已经用过的值,如果新随机出来的一样就重随机一次 04/14 20:04
3F:推 Harper34:3 做一个hashtable key是乱数 value对应号码 key排序後 04/15 00:13
4F:→ Harper34:去查hashtable对应的值 就是shuffle过的号码 04/15 00:14
5F:→ windmax1:感谢两位大大!! 04/15 15:11
不好意思,小弟是新手,所以遇到问题比较多
请教Ha大 我照你的连结最上面的程式,试着修改後将它套进我的程式码
放在timer.Tick底下
int n = imageList1.Images.Count;
while (n > 1)
{
n--; int k = rnd.Next(n + 1);
T value = imageList1.Images[k];
imageList1.Images[k] = imageList1.Images[n];
imageList1.Images[n] = value;
}
遇到一个问题,就是T value一定要在Shuffle<T>底下才会过
可是如果把上面这段放在Shuffle<T>底下imageList1.Images就无法过
我现在不知道怎麽做结合 冏
※ 编辑: windmax1 (124.11.129.171), 04/15/2014 18:33:31
再请教H大
我修改後试着放入,可是
shuffledList[i]这段会显示↓↓
错误 1 无法套用有 [] 的索引至类型
'System.Linq.IOrderedEnumerable<System.Windows.Forms.ImageList>' 的运算式
※ 编辑: windmax1 (124.11.129.171), 04/16/2014 18:01:45
8F:→ Harper34:shuffledList.ElementAt(i) 04/16 23:23
9F:→ Harper34:如果错误无法自行解决 建议你先多上MSDN看看范例 04/16 23:29
10F:→ windmax1:好的,感谢您 04/17 09:20
11F:→ windmax1:换成imageList1.Images[i]过不了,研究好久还是不知道为 04/17 17:43
12F:→ windmax1:何 冏 真的很抱歉 04/17 17:44