首页 教程 Web前端 记录|C#主界面设计【Web风格】

记录|C#主界面设计【Web风格】

目录

  • 前言
  • 一、页面效果
  • 二、布局设计
    • 2.1 左边菜单栏搭建框架
      • Step1. panelMenu :
      • Step2. panelLogo
      • Step3. button模板
      • Step4. 复制button
      • Step5. 微调Button
    • 2.2 界面颜色变换
      • Step1. ThemeColor类
      • Step2. From1.cs
      • Step3. 更换按钮点击颜色效果
    • 2.3 按钮点击事件
    • 2.4 顶部title栏搭建
      • Step1. panelTitleBar
      • Step2. Label
      • Step3. Label
      • Step4. panelLogo的背景变换
    • 2.5 布局效果展示
  • 三、子界面
    • Step1. Panel
    • Step2. 打开新Form的方法
    • Step3. 创建子Form
    • Step4. 子Form中布局
    • Step5. 按钮点击事件
    • Step6. 当前效果
  • 四、子Form细节设置【进阶】
    • Step1. 按钮和主题色同色
    • 效果:
  • 五、关闭按钮
    • Step1. Button
    • Step2. Button点击事件
    • 效果:
  • 六、在HOME添加LOGO【待补充,进阶】
  • 更新时间

前言

学习视频:
[ C# ][Winform]炫酷扁平UI,随机多色彩切换,活动窗口高亮按钮

上面的界面布局是值得学习的,页面间的切换也是不错的。
自己跟着做了下,代码上传了,可以下载【C#主界面设计】


一、页面效果

记录|C#主界面设计【Web风格】


二、布局设计

2.1 左边菜单栏搭建框架

Step1. panelMenu :

  • Dock:left
  • BackColor:51,51,76
    记录|C#主界面设计【Web风格】

Step2. panelLogo

  • Dock:top
  • BackColor:39,39,58 [偏黑点]
    记录|C#主界面设计【Web风格】

Step3. button模板

  • Dock:top
  • FlatStyle:Flat
  • FlatAppearance:
    • BoardSize:0
  • ForeColor:Gainsboro [web中]
  • Image:插入一张.png的icon图片
  • ImageAlign:MiddleLeft
  • TextImageRelation:ImageBeforeText
    记录|C#主界面设计【Web风格】

Step4. 复制button

  • 首先,复制黏贴
  • Padding:Left:12
    记录|C#主界面设计【Web风格】
    记录|C#主界面设计【Web风格】

Step5. 微调Button

  • Font:Microsoft Sans Serif, 11pt
    记录|C#主界面设计【Web风格】

2.2 界面颜色变换

Step1. ThemeColor类

记录|C#主界面设计【Web风格】
类里面,编写固定的颜色数组,让界面切换的时候,实现页面的颜色变化【代码如下:】

internalclassThemeColor{publicstaticList<string> ColorList =newList<string>(){"#3F51B5","#009688","#FF5722","#607D8B","#FF9800","#9C27B0","#2196F3","#EA676C","#E41A4A","#5978BB","#018790","#0E3441","#00B0AD","#721D47","#EA4833","#EF937E","#F37521","#A12059","#126881","#8BC240","#364D5B","#C7DC5B","#0094BC","#E4126B","#43B76E","#7BCFE9","#B71C46"};}

Step2. From1.cs

  • 编写颜色变换方法SelectThemeColor()

namespaceZHCHwindows_1{publicpartialclassForm1:Form{//FieldsprivateButton currentButton;privateRandom random;privateint tempIndex;publicForm1(){InitializeComponent(); random =newRandom();}//MethodsprivateColorSelectThemeColor(){int index = random.Next(ThemeColor.ColorList.Count);//找到与当前界面颜色不同的while(tempIndex == index){ index = random.Next(ThemeColor.ColorList.Count);} tempIndex = index;string color = ThemeColor.ColorList[index];return ColorTranslator.FromHtml(color);}}}

Step3. 更换按钮点击颜色效果

1)我们为主题选择一个随机颜色(可选,你可以使用单一颜色来突出显示按钮)。
2)我们改变按钮的背景颜色。
3)我们改变按钮的字体颜色。
4)我们改变按钮的字体大小。
最终实现:
记录|C#主界面设计【Web风格】

通过激活/突出显示按钮,我们增加了字体缩放效果的大小

privatevoidActivateButton(object btnSender){if(btnSender !=null){if(currentButton !=(Button)btnSender){DisableButton();Color color =SelectThemeColor(); currentButton =(Button)btnSender; currentButton.BackColor = color; currentButton.ForeColor = Color.White; currentButton.Font =newSystem.Drawing.Font("Microsoft Sans Serif",12.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,((byte)(0)));}}}privatevoidDisableButton(){foreach(Control previousBtn in panelMenu.Controls){if(previousBtn.GetType()==typeof(Button)){ previousBtn.BackColor = Color.FromArgb(51,51,76); previousBtn.ForeColor = Color.Gainsboro; previousBtn.Font =newSystem.Drawing.Font("Microsoft Sans Serif",10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,((byte)(0)));}}}


2.3 按钮点击事件

这里直接给6个button创建点击事件,在点击事件中调用ActivateButton()
代码如下:【只选其一展示】

privatevoidbtnProducts_Click(object sender,EventArgs e){ActivateButton(sender);}

此时,左边的菜单栏已经配置完毕:
记录|C#主界面设计【Web风格】


2.4 顶部title栏搭建

Step1. panelTitleBar

  • Dock:Top
  • BackColor:0,150,136
    记录|C#主界面设计【Web风格】

Step2. Label

  • Name:lblTitle
  • FontColor:White
  • Font:Mongolian Baiti,16pt
  • Anchor:None 【这个能实现,字体随窗口自适应大小】
    记录|C#主界面设计【Web风格】

Step3. Label

  • Name: lblMenu
  • FontColor:LightGray
  • Font:Microsoft Sans Serif, 12pt
    记录|C#主界面设计【Web风格】

Step4. panelLogo的背景变换

  • 在ThemeColor.cs中增加一个改变颜色亮度方法【代码如下:】

publicstaticColorChangeColorBrightness(Color color,double correctionFactor){double red = color.R;double green = color.G;double blue = color.B;//correction factor<0,则降低颜色亮度if(correctionFactor <0){ correctionFactor =1+ correctionFactor; red *= correctionFactor; green *= correctionFactor; blue *= correctionFactor;}else{ red =(255-red)*correctionFactor+red; green =(255-green)*correctionFactor+green; blue =(255-blue)*correctionFactor+blue;}return Color.FromArgb(color.A,(byte)red,(byte)green,(byte)blue);}

  • 在Form1.cs中的ActivateButton()方法中调用【代码如下】

privatevoidActivateButton(object btnSender){if(btnSender !=null){if(currentButton !=(Button)btnSender){DisableButton();Color color =SelectThemeColor(); currentButton =(Button)btnSender; currentButton.BackColor = color; currentButton.ForeColor = Color.White; currentButton.Font =newSystem.Drawing.Font("Microsoft Sans Serif",12.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,((byte)(0)));// 上方栏的颜色变化 panelTitleBar.BackColor = color; panelLogo.BackColor = ThemeColor.ChangeColorBrightness(color,-0.3);}}}


2.5 布局效果展示

记录|C#主界面设计【Web风格】


三、子界面

添加子窗体的容器面板

Step1. Panel

  • Name:panelDesktopPane
  • Dock:Fill
    记录|C#主界面设计【Web风格】

Step2. 打开新Form的方法

我们创造一个方法,实现在子panel中打开新的Forms

  • 在Form1.cs中,创建打开子Form的方法

privateForm activeForm;/// <summary>/// 打开子Form/// </summary>/// <param name="childForm"></param>/// <param name="btnSender"></param>privatevoidOpenChildForm(Form childForm,object btnSender){if(activeForm !=null){ activeForm.Close();}ActivateButton(btnSender); activeForm = childForm; childForm.TopLevel =false; childForm.FormBorderStyle = FormBorderStyle.None; childForm.Dock = DockStyle.Fill;this.panelDesktopPane.Controls.Add(childForm);this.panelDesktopPane.Tag = childForm; childForm.BringToFront(); childForm.Show();//让lblTitle的标题和子Form的标题一样this.lblTitle.Text = childForm.Text;}

Step3. 创建子Form

  • 添加"窗体(Windows窗体)"【如下图】
    记录|C#主界面设计【Web风格】
    记录|C#主界面设计【Web风格】

Step4. 子Form中布局

  • 这里为了演示界面跳转的效果,所以布局很随意。【如下图:】
  • 下面的部件,只有图中的四个的Anchor是改变的,其余不用变化。
    记录|C#主界面设计【Web风格】
  • 之后创建其余子Form界面【如下图】
    记录|C#主界面设计【Web风格】

Step5. 按钮点击事件

  • 刚换点击事件为:页面转换【其中一个的代码如下图:】

privatevoidbtnProducts_Click(object sender,EventArgs e){OpenChildForm(newForms.FormProduct(), sender);}

Step6. 当前效果

记录|C#主界面设计【Web风格】


四、子Form细节设置【进阶】

Step1. 按钮和主题色同色

  • 在ThemeColor.cs中添加如下代码

publicstaticColor PrimaryColor {get;set;}publicstaticColor SecondaryColor {get;set;}

  • 在Form1.cs中修改ActivativeButton()方法,最后代码如下

privatevoidActivateButton(object btnSender){if(btnSender !=null){if(currentButton !=(Button)btnSender){DisableButton();Color color =SelectThemeColor(); currentButton =(Button)btnSender; currentButton.BackColor = color; currentButton.ForeColor = Color.White; currentButton.Font =newSystem.Drawing.Font("Microsoft Sans Serif",12.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,((byte)(0)));// 上方栏的颜色变化 panelTitleBar.BackColor = color; panelLogo.BackColor = ThemeColor.ChangeColorBrightness(color,-0.3);// ThemeColor.PrimaryColor = color; ThemeColor.SecondaryColor = ThemeColor.ChangeColorBrightness(color,-0.3);}}}

  • 在子界面FormProduct.cs中,添加页面的颜色变换方法【以其为例子,代码如下】

publicpartialclassFormProduct:Form{publicFormProduct(){InitializeComponent();}privatevoidFormProduct_Load(object sender,EventArgs e){LoadTheme();}privatevoidLoadTheme(){foreach(Control btns inthis.Controls){if(btns.GetType()==typeof(Button)){Button btn =(Button)btns; btn.BackColor = ThemeColor.PrimaryColor; btn.ForeColor = Color.White; btn.FlatAppearance.BorderColor = ThemeColor.SecondaryColor;}} label4.ForeColor = ThemeColor.SecondaryColor; label5.ForeColor = ThemeColor.PrimaryColor;}}

  • 其余的子Form中也如上编写代码。

效果:

记录|C#主界面设计【Web风格】


五、关闭按钮

一个关闭按钮,用于关闭子Form,并重置为默认值。

Step1. Button

  • Name:btnCloseChildForm
  • FlatStyle:Flat
  • FlatAppearance:
  • BorderSize:0
  • Image:自己添加图片
  • Dock:Left
    记录|C#主界面设计【Web风格】

Step2. Button点击事件

  • 点击btnCloseChildForm后,关闭子Form。【Form1.cs代码如下:】

publicForm1(){InitializeComponent(); random =newRandom(); btnCloseChildForm.Visible =false;}privatevoidActivateButton(object btnSender){if(btnSender !=null){if(currentButton !=(Button)btnSender){DisableButton();Color color =SelectThemeColor(); currentButton =(Button)btnSender; currentButton.BackColor = color; currentButton.ForeColor = Color.White; currentButton.Font =newSystem.Drawing.Font("Microsoft Sans Serif",12.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,((byte)(0)));// 上方栏的颜色变化 panelTitleBar.BackColor = color; panelLogo.BackColor = ThemeColor.ChangeColorBrightness(color,-0.3);// ThemeColor.PrimaryColor = color; ThemeColor.SecondaryColor = ThemeColor.ChangeColorBrightness(color,-0.3); btnCloseChildForm.Visible =true;}}}privatevoidbtnCloseChildForm_Click(object sender,EventArgs e){//activeForm不为null,说明已经有一个子窗体被打开。if(activeForm !=null){ activeForm.Close();Reset();}}privatevoidReset(){DisableButton(); lblTitle.Text ="HOME"; panelTitleBar.BackColor = Color.FromArgb(0,150,136); panelLogo.BackColor = Color.FromArgb(39,39,58); currentButton =null; btnCloseChildForm.Visible =false;}

效果:

记录|C#主界面设计【Web风格】

六、在HOME添加LOGO【待补充,进阶】

更新时间

  • 2024.08.13:创建+第一章编写
  • 2024.08.14:第2,3,5章编写+代码上传
评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.24k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.29k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.2k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.12k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  511

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  321

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。