C#Winform窗体工具类(五)鼠标访问 改变控件 背景色
程序员文章站
2022-06-08 16:11:28
...
在开发中,有一些常常用到的方法,每次查找以前写的比较麻烦 ,自己写有在做重复工作 ,所以总一个小的工具类,随时添加内容
5.winform访问控件改变背景色 静态类 FormTools( public static class FormTools)
5.1控件A触发改变本身背景色 (此处A: contrl)
/// <summary>
/// 鼠标移入背景动画 (注册控件A 只触发事件只改变改变 A 的背景)
/// </summary>
/// <param name="contrl">要触发事件的控件</param>
/// <param name="hoverColor">鼠标访问时背景色</param>
public static void HoverBackColor(this Control contrl, Color hoverColor)
{
var leaveColor = contrl.BackColor;
contrl.MouseEnter+= (sender, e) =>
{
contrl.BackColor =hoverColor;
};
contrl.MouseLeave+= (sender, e) =>
{
contrl.BackColor = leaveColor;
};
}
5.2控件A触发改变控件B 背景色 (此处A: contrl, B: con)
/// <summary>
/// 鼠标移入背景动画 (注册控件A 触发事件改变 B 的背景色)
/// </summary>
/// <param name="contrl">要触发事件的控件</param>
/// <param name="con">要改变的背景颜色</param>
/// <param name="hoverColor">鼠标访问时背景色</param>
public static void HoverBackColor(this Control contrl,Control con, Color hoverColor)
{
var leaveColor = con.BackColor;
contrl.MouseEnter += (sender, e) =>
{
con.BackColor = hoverColor;
};
contrl.MouseLeave += (sender, e) =>
{
con.BackColor = leaveColor;
};
}
5.3 一组控件 触发改变 本身 背景色 (一组控件: control) /// <summary>
/// 鼠标移入背景动画 (注册一组控件控件B,C,D...触发改变 本身 的背景色)
/// </summary>
/// <param name="contrl">要触发事件的控件</param>
/// <param name="hoverColor">鼠标访问时背景色</param>
public static void HoverBackColor( Control[] contrl,Color hoverColor)
{
foreach (var con in contrl)
{
var leaveColor = con.BackColor;
con.MouseEnter += (sender, e) =>
{
con.BackColor = hoverColor;
};
con.MouseLeave += (sender, e) =>
{
con.BackColor = leaveColor;
};
}
}
5.4 一组控件触发改变 控件A的背景色 (一组控件: control ,控件 A :con) /// <summary>
/// 鼠标移入背景动画 (注册一组控件B,C,D...触发改变 A 的背景色)
/// </summary>
/// <param name="contrl">要触发事件的控件</param>
/// <param name="con">要改变的控件颜色</param>
/// <param name="hoverColor">鼠标访问时背景色</param>
public static void HoverBackColor(this Control con,Control [] contrl, Color hoverColor)
{
foreach (var c in contrl)
{
var leaveColor = con.BackColor;
c.MouseEnter += (sender, e) =>
{
con.BackColor = hoverColor;
};
c.MouseLeave += (sender, e) =>
{
con.BackColor = leaveColor;
};
}
}
调用
5.1 改变窗体背景色为 红色this.HoverBackColor(Color.Red);
5.2 鼠标访问Panel1时 改变窗体背景色 为红色 this.Panel1.HoverBackColor(this, Color.Red);
5.3 鼠标访问控件 times,label1 时改变它自己的背景色 为红色FormTools.HoverBackColor(new Control[] { this.times, this.label1 }, Color.Red);
5.4 鼠标访问控件 times,label1 时改变 panel1 的背景色 为红色this.Panel1.HoverBackColor(new Control[] { this.times, this.label1},Color.Red);