1

12個のボタンからなるマッチングゲームを作ろうとしています。プログラムは、12 個の文字列を含む配列からランダムな文字列を割り当てます。ボタンが押されると、タグが button.text に渡されます。私が今達成しようとしているのは、たとえばです。「ボタン 1」を押すと、テキストが「Chevy Camaro」に変わります。次に「ボタン 4」を押すと、button1.text が「シボレー カマロ」のタグ値ではなく、「ボタン 1」に戻ります。そして同様に「ボタン4」が押されたので、タグを表示させたいのですが……。

各ボタンには、使用されているボタンに基づいてもちろん変更されるボタン # 以外に、同様のコードがあります。

ボタンが現在アクティブなアイテムである場合は、そのタグ プロパティを表示し、そうでない場合は元に戻す方法がわかりません。

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

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

ご協力いただきありがとうございます。ゆっくりとこのことを学んでいます.... = p

4

2 に答える 2

2

最後にクリックされたボタンを追跡できます。

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;
    }
}
于 2012-12-14T02:30:02.253 に答える
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;
    }
于 2012-12-14T02:33:49.773 に答える