2013-10-23 151 views
0

如何使我的lblAnzeige的顏色爲紅色,白色,綠色,黃色和藍色? (所以,當我在btnGelb單擊文本lblAnzeige改變其顏色的五名者之一)在我的代碼它一個RGB顏色改變,但不正確的5那些:(隨機顏色文本

private void btnGelb_Click(object sender, EventArgs e) 
{ 
    int summe = 0, z; 
    lblAnzeige.Text = " "; 
    while (summe <= 0) 
    { 
     z = r.Next(1, 6); 
     summe = summe + z; 
    } 
    lblAnzeige.Text += colors[summe - 1] + "\n"; 
    lblAnzeige.ForeColor = Color.FromArgb(Farbe.Next(256), Farbe.Next(256), Farbe.Next(256)); 
} 
+0

什麼FARBE .Next()函數呢? – VladL

+3

'Farbe'可能是Random類型的對象。 – Dialecticus

+1

解決方案就是這樣。將你的顏色存儲到一個數組中,然後使用隨機方法生成一個介於0和數組大小-1之間的數字。我只是寫的過程中,你可以將其轉換爲代碼 – Tauseef

回答

3

你可以存儲你的顏色在列表或數組,然後隨機選擇一個從列表中。

static readonly IList<Color> myColors = 
     new[] { Color.Red, Color.Blue, Color.Green, Color.White, Color.Yellow }; 
private void btnGelb_Click(object sender, EventArgs e) 
{ 
    int summe = 0, z; 
    lblAnzeige.Text = " "; 
    while (summe <= 0) 
    { 
     z = r.Next(1, 6); 
     summe = summe + z; 
    } 
    lblAnzeige.Text += colors[summe - 1] + "\n"; 
    lblAnzeige.ForeColor = myColors[Farbe.Next(myColors.Count)]; 
} 
2
Private Function RandomColor() As System.Drawing.Color 
     Dim MyAlpha As Integer 
     Dim MyRed As Integer 
     Dim MyGreen As Integer 
     Dim MyBlue As Integer 
     Randomize() 
     MyAlpha = CInt(Int((254 * Rnd()) + 0)) 
     Randomize() 
     MyRed = CInt(Int((254 * Rnd()) + 0)) 
     Randomize() 
     MyGreen = CInt(Int((254 * Rnd()) + 0)) 
     Randomize() 
     MyBlue = CInt(Int((254 * Rnd()) + 0)) 
     Return Color.FromArgb(MyAlpha, MyRed, MyGreen, MyBlue) 

    End Function 

我已經有它在一個VB項目,我有......應該不難爲你將它轉換成C#

雖然我很喜歡對方的回答最好,這可能更迂迴的方式工作

private void Random() 
    { 
     RandomNumber random = new RandomNumber(); 
     int randomInt = random.RandomInRange(1, 5); 
    if (randomInt == 1) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Red; 
      } 
      else if (randomInt == 2) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Yellow; 
      } 
    else if(randomInt ==3) 
      { 
     lblLabel.ForeColor = System.Drawing.Color.White; 
      } 
      else if (randomInt == 4) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Blue; 
      } 
      else if (randomInt == 5) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Green; 
      } 
    } 


class RandomNumber 
{ 
    public int RandomInRange(int l, int u) 
    { 
     Random generator = new Random(); 
     return generator.Next(l, u); 
    } 
} 
+1

來自OP:「*改變它的顏色在**五個***之一***」(強調我的) – JDB

+0

+1,因爲雖然它沒有回答OP的問題,但它仍然是一個有用的算法。但請注意,這將在可見光譜中產生任何*顏色,包括可能的文本背景顏色(使文本不可見)或兩種視覺上無法區分的顏色。 – JDB

+0

好點,讀得太快了。那麼在這種情況下......(暫停,而我修復它) – Brandon

0

使用的字體顏色這種簡單techenique,可以進一步擴大..

Random NewRGBColor = new Random(); 
    LastIssueTxtBox.ForeColor = Color.FromArgb(NewRGBColor.Next(256), NewRGBColor.Next(256), NewRGBColor.Next(256)); 

斯蒂芬