1

ボタンのマウスオーバーイベントを使用して、単一のフォームにあるすべてのボタンの背景色を変更する関数を作成する必要があるという点で、C# Windows アプリケーション (WinForms) でプロジェクトを開発しています。それ、どうやったら出来るの?

4

3 に答える 3

3

タイプ ボタンのすべてのコントロールを変更する:

for (int i = 0; i < Controls.Count; i++)
            if (Controls[i] is Button) Controls[i].BackColor = Color.Blue;

フックの例:

MouseEnter += new EventHandler(delegate(object sender, EventArgs e)
    {
        SetButtonColour(Color.Blue);
    });

MouseLeave += new EventHandler(delegate(object sender, EventArgs e)
    {
        SetButtonColour(Color.Red);
    });

public void SetButtonColour(Color colour)
    {
        for (int i = 0; i < Controls.Count; i++)
            if (Controls[i] is Button) Controls[i].BackColor = Color.Blue;
    }
于 2010-08-26T13:49:56.297 に答える
0

このようなもの:

public partial class Form1 : Form
{
    Color defaultColor;
    Color hoverColor = Color.Orange;

    public Form1()
    {
        InitializeComponent();
        defaultColor = button1.BackColor;
    }

    private void Form1_MouseHover(object sender, EventArgs e)
    {
        foreach (Control ctrl in this.Controls)
        {
            if (ctrl is Button)
            {
                ctrl.BackColor = hoverColor;
            }
        }
    }

    private void Form1_MouseLeave(object sender, EventArgs e)
    {
        foreach (Control ctrl in this.Controls)
        {
            if (ctrl is Button)
            {
                ctrl.BackColor = defaultColor;
            }
        }
    }
}
于 2010-08-26T13:52:43.823 に答える
0

自分のアプリを変更するだけなら、それほど難しくありません。

マウス オーバー イベントでは、フォームの Controls プロパティをループし、Button であるすべてのアイテムの背景色を変更します。ただし、Panel (または GroupBox など) にはすべてのコントロールの Controls プロパティが含まれているため、おそらくすべてのボタンを見つけるには再帰関数を記述する必要があります。

于 2010-08-26T13:50:24.607 に答える