I am developing a project in C# Windows applications(win form) in that I need to create a function to change the back color for all the buttons that are in the single Win Form using button mouse over event
Изменение всех элементов управления типа Button:
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;
}
Что-то вроде этого:
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;
}
}
}
}
Если вы просто меняете собственное приложение, это не так сложно.
В событии наведения курсора мыши просто переберите свойство Controls формы и для всех элементов, которые являются Button, измените цвет фона. Возможно, вам нужно будет написать рекурсивную функцию, чтобы найти все кнопки, поскольку Panel (или GroupBox и т. д.) содержит свойство Controls для всех своих элементов управления.