Ik ben tegen iets vreemds aangelopen toen ik random kleuren voor de tijdsbalken in de scheduler waar ik mee bezig ben wilde maken.
Je zou toch verwachten dat hij random kleuren genereert? Maar wat hij doet is random grijswaarden genereren. Dit komt, heb ik ontdekt, dat alle 3 de random int-objecten op een of andere manier dezelfde waarde krijgen.
Op deze manier werkt het wel:
Maar waarom werkte de eerste methode niet?
C#:
1
2
3
4
5
6
7
8
9
| private void dbiSchedule1_BeforeTimeBarInsert(object sender, BeforeTimeBarInsertEventArgs e) { e.TimeBarItem.BackColor = Color.FromArgb( new Random().Next(255), new Random().Next(255), new Random().Next(255) ); } |
Je zou toch verwachten dat hij random kleuren genereert? Maar wat hij doet is random grijswaarden genereren. Dit komt, heb ik ontdekt, dat alle 3 de random int-objecten op een of andere manier dezelfde waarde krijgen.
Op deze manier werkt het wel:
C#:
1
2
3
4
5
6
7
8
| private void dbiSchedule1_BeforeTimeBarInsert(object sender, BeforeTimeBarInsertEventArgs e) { Random rd = new Random(); int r= rd.Next(255); int g = rd.Next(255); int b = rd.Next(255); e.TimeBarItem.BackColor = Color.FromArgb(r, g, b); } |
Maar waarom werkte de eerste methode niet?