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

本项目的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界面中编写代码

效果为:

csharp 复制代码
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变化。【但是点击后依旧保持这个颜色,所以后面要设置离开后的事件去恢复颜色】
csharp 复制代码
        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的离开事件,让颜色恢复。

csharp 复制代码
        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设置如下:

  • 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#源代码
相关推荐
IT规划师15 分钟前
C#|.net core 基础 - 扩展数组添加删除性能最好的方法
c#·.netcore·数组
时光追逐者1 小时前
分享6个.NET开源的AI和LLM相关项目框架
人工智能·microsoft·ai·c#·.net·.netcore
friklogff1 小时前
【C#生态园】提升C#开发效率:深入了解自然语言处理库与工具
开发语言·c#·区块链
__water10 小时前
『功能项目』回调函数处理死亡【54】
c#·回调函数·unity引擎
__water10 小时前
『功能项目』眩晕图标显示【52】
c#·unity引擎·动画事件
__water11 小时前
『功能项目』第二职业法师的平A【57】
c#·unity引擎·魔法球伤害传递
__water13 小时前
『功能项目』战士的伤害型技能【45】
c#·unity引擎·战士职业伤害型技能
君莫愁。14 小时前
【Unity】检测鼠标点击位置是否有2D对象
unity·c#·游戏引擎
Lingbug15 小时前
.Net日志组件之NLog的使用和配置
后端·c#·.net·.netcore
咩咩觉主15 小时前
Unity实战案例全解析:PVZ 植物卡片状态分析
unity·c#·游戏引擎