c# - 单击另一个按钮时隐藏按钮文本

时间:2012-12-14 01:57:33

标签: c# button tags

我正在尝试创建一个由12个按钮组成的匹配游戏。程序从一个包含12个字符串的数组中分配一个随机字符串。按下按钮时,标签将传递给button.text。 我现在想要完成的是,例如。如果我按“按钮1”,它的文本将变为“Chevy Camaro”。如果我接下来按“按钮4”,我希望button1.text恢复回“按钮1”,而不是它的标签值“Chevy Camaro”。并且以同样的方式,由于“按钮4”被按下,我希望它显示标签.....

每个按钮都有类似的代码,除了按钮#,当然根据正在使用的按钮进行更改。

我不确定如何说明,如果按钮是当前活动项,则显示它的标签属性,否则,还原。

private void button4_Click(object sender, EventArgs e)     
{
    button4.Text = button4.Tag.ToString();

    buttoncount++;
    label2.Text = buttoncount.ToString();
}

提前感谢您的所有帮助。慢慢学习这些东西.... = p

2 个答案:

答案 0 :(得分:1)

您可以跟踪点击的最后一个按钮:

public partial class Form1 : Form
{
    Button lastButton = null;
    int buttoncount;

    public Form1()
    {
        InitializeComponent();
        button1.Tag = "Ford Mustang";
        button2.Tag = "Ford Focus";
        button3.Tag = "Chevy Malibu";
        button4.Tag = "Chevy Camaro";
        button1.Click += button_Click;
        button2.Click += button_Click;
        button3.Click += button_Click;
        button4.Click += button_Click;
        //etc...
    }

    void button_Click(object sender, EventArgs e)
    {
        if (lastButton != null)
        {
            SwitchTagWithText();
        }

        lastButton = sender as Button;
        SwitchTagWithText();

        buttoncount++;
        label2.Text = buttoncount.ToString();
    }

    void SwitchTagWithText()
    {
        string text = lastButton.Text;
        lastButton.Text = lastButton.Tag.ToString();
        lastButton.Tag = text;
    }
}

答案 1 :(得分:0)

你可以使用RadioButton控件并将其外观设置为按钮吗?用这些按钮替换所有按钮,将它们放在GroupBox中,并且可以自动处理单击时“恢复”的外观。要更新文本,可以使用下面的简单事件处理程序;

    private void MakeButton()
    {
        RadioButton rb = new RadioButton
        {
            Appearance = Appearance.Button,
            Tag = "Chevy Camero"
        };
        rb.CheckedChanged += rb_CheckedChanged;
    }

    private void rb_CheckedChanged(object sender, EventArgs e)
    {
        RadioButton clickedButton = sender as RadioButton;
        string currentText = clickedButton.Text;
        clickedButton.Text = clickedButton.Tag.ToString();
        clickedButton.Tag = currentText;
    }