我正在尝试创建一个由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
答案 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;
}