C# 绘制多个控件的边框

这几天想绘制一组控件的边框,即:这一组控件默认有一个边框,鼠标移上去之后,边框变亮一点,鼠标点击一下,这组控件的边框就变为高亮状态(同时其他高亮边框的控件组恢复默认边框)。于是自己写了一个类,可以很方便的管理控件(组)的边框变换:控件(组)的大小发生变化时,边框的位置也能随之更新;同时加入了过渡效果,边框的变化是渐变的。这里就分享一下我的代码吧。




使用方法:

例如,上面的窗体界面中需要创建三个边框:

左边的dataGridView_Variables及下面的“刷新”、“提交”按钮button_Refresh、button_Commit分为一组,需要一个边框;

右上方的textBox_Receive及自己绘制的滚动条控件scrollBar_Receive为一组(滚动条紧贴着textBox_Receive的右侧,这里自动隐藏了,所以看不到),需要另外一个边框;

右下方的textBox_Send以及textBox_Send右侧的滚动条控件scrollBar_Send为一组(这个自绘的滚动条控件也自动隐藏了,所以看不到),需要第三个边框。


首先,在主窗体类public partial class MainWindow : Form 中添加一个局部变量:

        private ControlBorderManager bordermanager = new ControlBorderManager();

然后,在form_load事件中添加如下初始化代码:

private void MainWindow_Load(object sender, EventArgs e)
{
    bordermanager.AddControlGroup(
    this,
    new Control[] { textBox_Receive, scrollBar_Receive },
    Color.FromArgb(80, 80, 80),
    Color.FromArgb(150, 150, 150),
    Color.FromArgb(41, 204, 41),
    () =>
    {
        return new Rectangle(
            textBox_Receive.Left - 1,
            textBox_Receive.Top - 1,
            textBox_Receive.Width + scrollBar_Receive.Width + 1,
            textBox_Receive.Height + 1
            );
    });

    bordermanager.AddControlGroup(
        this,
        new Control[] { textBox_Send, scrollBar_Send },
        Color.FromArgb(80, 80, 80),
        Color.FromArgb(150, 150, 150),
        Color.FromArgb(41, 204, 41),
        () =>
        {
            return new Rectangle(
                textBox_Send.Left - 1,
                textBox_Send.Top - 1,
                textBox_Send.Width + scrollBar_Send.Width + 1,
                textBox_Send.Height + 1
                );
        });

    bordermanager.AddControlGroup(
        this,
        new Control[] { dataGridView_Variables, button_Refresh, button_Commit },
        Color.FromArgb(80, 80, 80),
        Color.FromArgb(150, 150, 150),
        Color.FromArgb(41, 204, 41),
        () =>
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值