2017-03-30 24 views
1

私は今日書いたコードに質問を記録しています。私はボタンの背景色を変更できることを知っていますが、一度だけ(button2.BackColor = Color.Yellow;)。しかし今、私には問題があります。
ボタンをクリックしようとするたびに色が変わるはずです。どのように機能するのですか?ご協力ありがとうございました。ボタンをクリックしようとするたびに、ボタンの色を変更するにはどうすればよいですか?

これは私のコードです。私は面白い何かをプログラムしました:あなたがボタンをクリックしようとすると、それは消え、他の場所に現れます:)色の配列を保持し、各クリックでその配列からランダムに色を選択するか、各クリックでランダムな色を生成する次のいずれか ¨

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    Random cox = new Random(); 

    private void button2_MouseMove(object sender, MouseEventArgs e) 
    { 
     int x = cox.Next(500); 
     int y = cox.Next(500); 
     button2.Left = x; 
     button2.Top = y; 
    } 
} 
+0

色は黄色に変更されていますが、黄色のままですので変更はありません – BugFinder

+0

0から255の間で3つの値を生成するには 'random'を使用し、その後ボタンを押すと' Color.FromArgbを押して色を設定します。 – Equalsk

+1

可能な色を 'Color []'に格納し、 'Random'を使って色を選択します:' var nextColor = colorArray [cox.Next(colorArray.Length)]; ' –

答えて

4

はBesicallyあなたは2つのオプションがあります。

オプション1:

// inside your form: 
Color[] colors = new Color[] {Color.Yellow, Color.Green, Color.Red}; 

// inside the button click event handler: 
button2.BackColor = colors[col.Next(0,colors.Length)]; 

オプション2:もちろん

// inside the button click event handler: 

button2.BackColor = new Color(col.Next(0,256), col.Next(0,256), col.Next(0,256)); 

は、両方のオプションは、あなたが提供するコードにcolという名前Randomインスタンスを使用します。

+0

'button2.BackColor = colors [col.Next(0、colors.Length)];'少し良いかもしれません。 – Equalsk

+0

@Equalsk good catch!一定。 –

+0

私の答えは非常に同じになるだろう:0あなたは私にそれを打つ。しかし、色を真剣に考えれば、配列オプションを使うとはるかに良い結果が得られます。ランダムな要素は楽しいですが、恐ろしく見えます。 –

関連する問題