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

假设您只是更改自己的应用程序,这并不难。

在鼠标悬停事件中,只需遍历窗体的 Controls 属性,对于所有 Button 项目,更改背景颜色。您可能需要编写一个递归函数来查找所有按钮,因为 Panel(或 GroupBox 等)包含其所有控件的 Controls 属性。

于 2010-08-26T13:50:24.607 回答
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 回答