首页 > 编程语言 >记录|C#+winform创建扁平化风格界面

记录|C#+winform创建扁平化风格界面

时间:2024-07-25 21:59:12浏览次数:16  
标签:Left 扁平化 C# Top Height 设置 BackColor winform pnlNav

本项目的C#内容是自己跟做的,自己做的内容已经打包,可以通过自己跟做写的Dashboard界面,C#下的winform模式下载获得,但是需要花费3个积分

目录


前言

这是篇跟练文章,主要是记录自己对视频中内容的复刻,旨在通过复刻实现对Winform中的界面布局的了解。

记录来源:[C#][Winform]如何创建一个炫酷的扁平化风格Dashboard
下载文件:自己跟做写的Dashboard界面,C#下的winform模式


一、左边设置和步骤

界面

Form

  • StartPosition:CenterScreen
  • FormBorderStyle:None
  • BackColor:46,51,73
  • Size:951,577

Panel1

  • BackColor:24,30,54
  • Dock:Left
  • Size:186,577

Panel2

  • Dock:Top
  • Size:186,144

PictureBox1

  • 参数直接点击下图中符号设置
    在这里插入图片描述
  • 具体而言,是设置了Image和SizeMode的属性。
  • Location:60,20在这里插入图片描述

Label1

  • ForeColor:0, 126, 249
  • Text:UserName
  • Font中设置如下:
    在这里插入图片描述
    Label2
  • ForeColor:158,161,178
  • BackColor:Transparent
  • Text:Some User Text Here
  • Font设置如下:
    在这里插入图片描述
    Button1
  • Name:btnDashboard
  • Text:Dashboard
  • FlatSytle:Flat
  • FlatAppearance中的BorderSize:0
  • ForeColor:0,126,249
  • Font设置如下:
    在这里插入图片描述
  • Bold:True
  • Dock:Top
  • Image:更换图标
  • Size:186,42
  • TextImageRelation:TextBeforeImage
    以上动作做好后,再次将Dock改为:None 【目的是:将这个Button1模块复制出多个】
    但是上面复制好后,仍旧是将Dock改回为Top

Button2

  • Name:btnAnalytics
  • Image:更换图
  • Text:Analytics
  • Dock:Top

Button3

  • Name:btnCalender
  • Text:Calender
  • Dock:Top

Button4

  • Name:btnContectUs
  • Text:ContectUs

Button5

  • Name:btnSettings
  • Text:Settings
  • Dock:bottom

Panel3

  • Name:PnlNav
  • BackColor:0, 126, 249
  • Size:3,194
  • Location:移动Panel3到达合适的位置【看图】

步骤

Step1.

Form创建,设置Form参数
创建Panel1,设置参数
创建Panel2,放入Panel1中设置参数,
创建PictureBox1,放入Panel2中,设置参数
创建Label1,设置参数,放在在PictureBox1下
此时效果为:
在这里插入图片描述

Step2.

创建Label2,设置参数,放置在Label1的正下方。
创建Button1,设置参数。
以Button1为模板,复制出多个Button
当前效果如下所示:【我的home.png不知道为啥很大,无法设置Zoom属性
在这里插入图片描述
后来解决了,发现这里只能通过改变.png图片自身的大小来实现调节。
在这里插入图片描述

Step3.

对这些button2~button4进行属性设置。将Panel3放在合适的位置,最终结果如下所示:
在这里插入图片描述

Step4

双击Form界面,进入Form.cs界面中编写代码
在这里插入图片描述
效果为:
在这里插入图片描述

using System.Runtime.InteropServices;

    public partial class Form1 : Form
    {
        [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]

        private static extern IntPtr CreateRoundRectRgn
 (
       int nLeftRect,
       int nTopRect,
       int nRightRect,
       int nBottomRect,
       int nWidthEllipse,
       int nHeightEllipse

 );
        public Form1()
        {
            InitializeComponent();
            Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 25, 25));
            pnlNav.Height = btnDashboard.Height;
            pnlNav.Top = btnDashboard.Top;
            pnlNav.Left = btnDashboard.Left;
            btnDashboard.BackColor = Color.FromArgb(46, 51, 73);
        }
}

Step5

设置buton1~button5的点击事件。让Panel跟踪对应的button。

  • 设置了Panel的跟随
  • 设置了点击后的BackColor变化。【但是点击后依旧保持这个颜色,所以后面要设置离开后的事件去恢复颜色】
        private void btnDashboard_Click(object sender, EventArgs e)
        {
            pnlNav.Height = btnDashboard.Height;
            pnlNav.Top = btnDashboard.Top;
            pnlNav.Left = btnDashboard.Left;
            btnDashboard.BackColor = Color.FromArgb(46, 51, 73);
        }

        private void btnAnalytics_Click(object sender, EventArgs e)
        {
            pnlNav.Height = btnAnalytics.Height;
            pnlNav.Top = btnAnalytics.Top;
            pnlNav.Left=btnAnalytics.Left;
            btnAnalytics.BackColor = Color.FromArgb(46, 51, 73);
        }

        private void btnCalender_Click(object sender, EventArgs e)
        {
            pnlNav.Height=btnCalender.Height;
            pnlNav.Top=btnCalender.Top;
            pnlNav.Left= btnCalender.Left;
            btnCalender.BackColor = Color.FromArgb(46, 51, 73);
        }

        private void btnContectUs_Click(object sender, EventArgs e)
        {
            pnlNav.Height = btnContectUs.Height;
            pnlNav.Top = btnContectUs.Top;
            pnlNav.Left=btnContectUs.Left;
            btnContectUs.BackColor = Color.FromArgb(46, 51, 73);
        }

        private void btnSettings_Click(object sender, EventArgs e)
        {
            pnlNav.Height = btnSettings.Height;
            pnlNav.Top=btnSettings.Top;
            pnlNav.Left = btnSettings.Left;
            btnSettings.BackColor = Color.FromArgb(46, 51, 73);
        }

设置button1-button5的离开事件,让颜色恢复。

        private void btnDashboard_Leave(object sender, EventArgs e)
        {
            btnDashboard.BackColor = Color.FromArgb(24, 30, 54);
        }

        private void btnAnalytics_Leave(object sender, EventArgs e)
        {
            btnAnalytics.BackColor = Color.FromArgb(24, 30, 54);
        }

        private void btnCalender_Leave(object sender, EventArgs e)
        {
            btnCalender.BackColor = Color.FromArgb(24, 30, 54);
        }

        private void btnContectUs_Leave(object sender, EventArgs e)
        {
            btnContectUs.BackColor = Color.FromArgb(24, 30, 54);
        }

        private void btnSettings_Leave(object sender, EventArgs e)
        {
            btnSettings.BackColor = Color.FromArgb(24, 30, 54);
        }

二、右边属性和步骤

属性设置

Label4

  • font设置如下:
    [在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cdea5c2cc3eb4252aa5f9093cbed1af5.png)-

  • ForeColor:158,161,176

  • Location:20,17

  • Text:Dashboard

TextBox1

  • Text:Search For Somethings
  • Size:292, 28
  • MultiLine:True
  • ForeColor:200,200,200
  • Font设置:
    在这里插入图片描述
  • BackColor:74, 79, 99

button1

  • Text:X
  • Size:25,25
  • ForeColor:White
  • FlatStyle:Flat
  • FlatAppearence下的BorderSize:0

Panel5

  • Size:258,130
  • BackColor:37,42,64

Label5

  • ForeColor:White
  • Text:Earning
  • Font:
    在这里插入图片描述

Label6

  • Text:$12345
  • ForeColor:0,146,249
  • Font:
    在这里插入图片描述

Label7

  • Text:Details of Last 28 Days
  • Font:
    在这里插入图片描述
  • ForeColor:159,151,176

PictureBox2

  • sizeMode:Zoom

步骤

Step1.

创建Panel4,用于遍布右边窗口界面。
创建Label3,放入Panel4左上角。
创建TextBox1,放在左边
创建Button放在TextBox1的右边
创建Panel5,放在Label3的下边
创建Label4和Label5,Label6和Label7放在Panel4中
创建PictureBox2,放在Panel5中。
当前效果如下图所示:
在这里插入图片描述

Step2.

复制Step1.中的内容,只需要更改色彩和图片即可。
ForeColor:50, 226, 178
在这里插入图片描述

Step3.

创建个button,用于显示进度图。【视频中是用了CircularProgressBar组件,很遗憾我没有,只要用贴图在button上的方式实现,或者用PictureBox来实现】
在这里插入图片描述

三、最终效果

设计图:

在这里插入图片描述

运行图:

在这里插入图片描述

更新时间

  • 2024.07.22:创建,上传C#源代码

标签:Left,扁平化,C#,Top,Height,设置,BackColor,winform,pnlNav
From: https://blog.csdn.net/qq_41714549/article/details/140602269

相关文章

  • 排序与 Retract 流的关系
    动态更新的聚合结果:当你在Flink中进行聚合操作(如 GROUPBY 和 ORDERBY)时,数据是动态变化的。新的数据到达时,可能会影响当前的聚合结果。为了保持聚合结果的准确性,Flink需要撤回旧的聚合结果并添加新的聚合结果。这就是Retract流的作用。窗口操作:在窗口操作中,数据会......
  • 【PyTorch】基于YOLO的多目标检测项目(二)
    【PyTorch】基于YOLO的多目标检测项目(一)【PyTorch】基于YOLO的多目标检测项目(二)YOLO-v3网络由跨距为2的卷积层、跳跃连接层和上采样层组成,没有池化层。网络接收一幅416*416的图像作为输入,并提供三个YOLO输出。目录准备配置文件搭建YOLO模型 搭建PyTorch模块搭......
  • YOLOv8改进 | 主干网络 | ⭐重写星辰Rewrite the Stars⭐【CVPR2024】
     秋招面试专栏推荐:深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • CF1843F2 题解
    题面注意到边权只有\(1,-1\),所以有结论:存在值为\(v\)的子段当且仅当\(v\in[\)最小子段和,最大子段和\(]\)。证明:因为移动区间端点,区间和变化连续(+1/-1),从最小子段移动到最大子段,子段和一定经过\(v\),所以得证。于是只要树剖维护最小最大子段和即可。和线段树上维护的数据......
  • 【Docker】CentOS7环境下的安装
    环境展示安装配置仓库sudoyuminstall-yyum-utils#docker官方key文件下载sudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo#建议使用阿里云key文件下载sudoyum-config-manager--add-repohttps://mirrors.aliy......
  • C99 版本特性
    title:C99版本特性date:2021-07-2616:00:00前言本文性质为学习总结,若有错误敬请指正。目录C语言版本历史C99主要特性新特性示例代码文末C主要版本C语言的标准化过程由国际标准化组织(ISO)和国际电工委员会(IEC)负责。以下是C语言各个版本的主要顺序:K&RC(1978......
  • C语言常见操作符(补充)
    前言:在这篇文章中,我们将会认识到更多的C语言操作符,并通过简单的介绍和相应的代码,来更好的了解它们。位操作符:位操作符在计算机中以二进制的形式,进行运算。&按位与                                         |按位或   ......
  • 暑假集训CSP提高模拟7
    这个T1的\(n^{3}\)的SPJ效率还是太慢了,膜拜SPJ大神学长,还会画画A.Permutations&Primes这题感觉挺水的但是感觉有不是那么水,主要还是因为我赛时没想出正解,在打的表里找了一组好看的规律,打上了然后就过了.对偶数来说,我的规律正好是正解的特化,但是对奇数来说,我的规律就......
  • .NET 中使用依赖注入时,如果将 DbContext 注册为单例,会导致一些严重的问题
    在.NET中使用依赖注入时,如果将DbContext注册为单例,会导致一些严重的问题。DbContext设计为一个短生命周期的对象,通常与一个请求(在Web应用中)或一个单元操作(在桌面应用中)相对应。以下是将DbContext注册为单例会导致的问题:1.线程安全问题DbContext不是线程安全的,将其注......
  • static final 的含义和作用
    在Java中,staticfinal结合使用具有特定的含义和用途:staticfinal的含义和作用static:static修饰符表示该字段或方法属于类本身,而不是类的实例。也就是说,static字段或方法被所有实例共享,而不是每个实例都有自己的副本。static字段或方法在类加载时初始化,并且在整个程序运行......