0

パネルにボタンのリストがあります(動的に生成されます)。私のアプリケーションでは、ボタンの 1 つがクリックされると、その外観が変わるはずです。ユーザーが選択を変更してリスト内の別のボタンをクリックすると、新しいボタンの外観が変更され、古いボタンはデフォルトの外観に戻ります。
まったく関係のないボタンをクリックすると、選択が確定されます。

どうすればいいですか?外観を変更することは実際には問題ではありませんが、以前の選択があり、元に戻すことは問題です。

ありがとう。

4

3 に答える 3

1

パネル内のすべてのボタンのボタン クリック イベント ハンドラーを作成し、そこですべての更新を処理します。

private void MyToggleButton_Click(object sender, EventArgs e) {
    // Set all Buttons in the Panel to their 'default' appearance.
    var panelButtons = panel.Controls.OfType<Button>();
    foreach (Button button in panelButtons) {
        button.BackColor = Color.Green;
        // Other changes...
    }

    // Now set the appearance of the Button that was clicked.
    var clickedButton = (Button)sender;
    clickedButton.BackColor = Color.Red;
    // Other changes...
}
于 2012-09-14T23:07:12.387 に答える
0

現在選択されているボタンを格納するために変数を使用できませんか

疑似コード

ボタン b = selectedButton

クリックイベントで

b != 送信者の場合

bを元に戻す

b = 新しく選択されたボタン

于 2012-09-14T23:01:27.840 に答える
0

現在のボタンを格納する変数を用意し、新しくクリックされたボタンを割り当てる前に、以前に割り当てられたボタンの色を変更してください。

 private Button currentBtn = null;

ボタンの共通イベント ハンドラを作成する

 protected void b_Click(object sender, EventArgs e)
    {
        Button snder  = sender as Button;

        //for the first time just assign this button
        if (currentBtn == null)
        {
            currentBtn = snder;
        }
        else //for the second time and beyond
        {
            //change the previous button to previous colour. I assumed red
            currentBtn.BackColor = System.Drawing.Color.Red;

            //assign the newly clicked button as current
            currentBtn = snder;
        }

        //change the newly clicked button colour to "Active" e.g green
        currentBtn.BackColor = System.Drawing.Color.Green;
    }
于 2012-09-14T23:21:39.513 に答える