【问题标题】:C# changing other buttons colour in turnC#依次改变其他按钮颜色
【发布时间】:2014-04-27 12:50:08
【问题描述】:

当点击顶部按钮时,我试图让底部按钮在一列按钮中发生变化。单击顶部按钮后,列中的底部按钮应更改颜色,然后再次单击顶部按钮时,列中的下一个按钮也应更改颜色。

我正在尝试制作类似于连接四中的一列的工作方式,当每个计数器被不同的玩家放入时,该列将被填充,直到该列已满。尽管在这种情况下,它是一列空白按钮正在填充,直到顶部按钮本身改变颜色。

当单击顶部按钮一次时,下面的代码会更改底部两个按钮的颜色。但是我想要发生的是,当我单击顶部按钮时,底部按钮变为红色,然后当再次单击它时,从底部向上的按钮变为蓝色,依此类推,直到顶部按钮本身已经变色了。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        bool player1 = true;
        bool player2 = false;

        private bool button1clicked = true;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1clicked == true && player1 == true)
            {
                button6.BackColor = Color.Red;

                player1 = false;
                player2 = true;

                button1clicked = false;
            }
            if (button1clicked == false && player2 == true)
            {
                button5.BackColor = Color.Blue;

                player2 = false;
                player1 = true;

                button1clicked = true;
            }

        }
    }
}`

单击顶部按钮后我的代码生成的图像: http://gyazo.com/af1636cd0b6ce5686e46f86e2ed186d1

谢谢大家:)

【问题讨论】:

    标签: c# visual-studio-2012 button click backcolor


    【解决方案1】:

    我会采取不同的方法,用您的按钮和所需颜色填充字典,然后采用具有默认背景颜色的第一个匹配项。

                // Populate dictionary
            Dictionary<Button, Color> myButtons = new Dictionary<Button, Color>();
            myButtons.Add(button1, Color.Red);
            myButtons.Add(button2, Color.Blue);
            myButtons.Add(button3, Color.Green);
            myButtons.Add(button4, Color.Purple);
            myButtons.Add(button5, Color.Pink);
            myButtons.Add(button6, Color.PaleVioletRed);
    
            // Get first untouched occurrence
            var buttonToBeChanged = myButtons.Reverse().FirstOrDefault(x => x.Key.BackColor.IsSystemColor);
    
            // No buttons left
            if (buttonToBeChanged.Key == null)
                MessageBox.Show("No buttons left!");
            else
                buttonToBeChanged.Key.BackColor = buttonToBeChanged.Value;
    

    【讨论】:

    • 很抱歉,这听起来有点愚蠢,但代码的哪一部分会出现?我从来没有用过这本字典的东西,所以我不确定。
    • 我已经完成了。对那里的愚蠢时刻感到抱歉,非常感谢您的帮助! :)
    • 它会继续你的第一个按钮点击事件,没有问题。但如果它回答了您的问题,请务必标记为已解决。
    • 我将如何改变玩家轮到它的颜色?我让玩家 1 等于 false 和 true 等等,但我将如何使用该字典方式来做到这一点?
    • 你的意思是每个玩家都有自己的颜色?如果是,则创建一个布尔变量来定义每个玩家的回合:如果玩家 1 回合背景颜色 = 红色,如果不是(然后玩家 2 回合)背景颜色 = 蓝色。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 2013-04-12
    • 2015-11-23
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多