c#-单击其他按钮时隐藏按钮文本

c#-单击其他按钮时隐藏按钮文本,c#,button,tags,C#,Button,Tags,我正在尝试创建一个由12个按钮组成的匹配游戏。程序从包含12个字符串的数组中分配一个随机字符串。按下按钮时,标签将传递到button.text。 举例来说,我现在想要完成的就是。如果我按下“按钮1”,它的文本将变为“雪佛兰卡马罗”。如果我下一步按“按钮4”,我希望button1.text回复为“按钮1”,而不是“Chevy Camaro”的标签值。同样地,由于按下了“按钮4”,我希望它显示标签 除了按钮#之外,每个按钮都有类似的代码,按钮#当然会根据所使用的按钮而变化 我不确定如何声明,如果按钮

我正在尝试创建一个由12个按钮组成的匹配游戏。程序从包含12个字符串的数组中分配一个随机字符串。按下按钮时,标签将传递到button.text。 举例来说,我现在想要完成的就是。如果我按下“按钮1”,它的文本将变为“雪佛兰卡马罗”。如果我下一步按“按钮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

您可以跟踪上次单击的按钮:

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;
    }
}

您能使用外观设置为button的RadioButton控件吗?用这些按钮替换所有按钮,将它们放在一个分组框中,单击“关闭”时外观的“恢复”可以自动处理。要更新文本,可以使用下面这样的简单事件处理程序

    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;
    }

您需要确保所有按钮使用相同的事件处理程序。如果没有人能打败我,我会很快给你打一个例子:)Eric,根据上面的内容,如果我理解正确,你已经静态地将字符串分配给了相应的按钮?我有两个数组,一个用于按钮名称,即“按钮1”、“按钮2”等。第二个数组提取汽车名称。它会随机地将汽车名称分配给一个随机按钮。最终目标是一场比赛。12个按钮,6个不同的车名…等等,我只是告诉你如何跟踪被点击的按钮…并切换回文本…你最初如何填写标签和文本属性是不相关的。工作非常完美!谢谢Eric。我的项目要求它必须是按钮:/如“您必须使用System.Windows.Forms.Button控件”?否则,我的建议会让屏幕上出现各种按钮。