首页 > 其他分享 >Winform高亮显示图标和标题

Winform高亮显示图标和标题

时间:2023-11-05 15:48:07浏览次数:32  
标签:高亮 currentBtn Color leftBorderBtn private 按钮 RGBColor Winform 图标

效果下如图:

 

创建ActivateButton公用方法,代码如下:

        private void ActivateButton(object senderBtn, Color color1, Color color2, Color color3)
        {
            if (senderBtn != null)
            {
                DisableButton();

                //Button
                currentBtn = (IconButton)senderBtn;
                currentBtn.BackColor = Color.LightSlateGray;
                currentBtn.ForeColor = color1;
                currentBtn.IconColor = color2;
                currentBtn.ImageAlign = ContentAlignment.MiddleRight;
                currentBtn.ImageAlign = ContentAlignment.MiddleRight;
                currentBtn.TextImageRelation = TextImageRelation.TextBeforeImage;

                //Left border button
                leftBorderBtn.Location = new Point(0, currentBtn.Location.Y);
                leftBorderBtn.BackColor = color3;
                leftBorderBtn.Visible = true;
                leftBorderBtn.BringToFront();

            }
        } 
       这段代码实现了按钮激活状态的样式变化。当按钮被点击时,会调用此方法,并传入当前按钮、颜色参数。方法会先调用DisableButton()方法,将之前激活的按钮恢复为默认状态。
       然后将传入的当前按钮设为激活状态,改变背景色、前景色、图标颜色等,并将左边框按钮的位置移动到当前按钮的位置,改变其背景色,并将其置于最前面。

 

创建恢复按钮默认状态DisableButton公共方法,代码如下:

        private void DisableButton()
        {
            if (currentBtn != null)
            {
                currentBtn.BackColor = Color.Gainsboro;
                currentBtn.ForeColor = Color.DimGray;
                currentBtn.IconColor = Color.SaddleBrown;
                currentBtn.ImageAlign = ContentAlignment.MiddleLeft;
                currentBtn.ImageAlign = ContentAlignment.MiddleLeft;
                currentBtn.TextImageRelation = TextImageRelation.ImageBeforeText;
            }

        }

声明必要类型字段,创建静态Color结构,构造函数,代码如下:

 1         private IconButton currentBtn;
 2         private Panel leftBorderBtn;
 3         public Form1()
 4         {
 5             InitializeComponent();
 6             leftBorderBtn = new();
 7             leftBorderBtn.Size = new Size(7, 50);
 8             panelMenu.Controls.Add(leftBorderBtn);
 9 
10             //Forms
11             this.Text = string.Empty;
12             this.ControlBox = false;
13             this.DoubleBuffered = true;
14             this.MaximizedBounds =     
15             Screen.FromHandle(this.Handle).WorkingArea;
16         }
17 
18         private struct RGBColor
19         {
20             public static Color color1 = Color.FromArgb(0, 0, 0);
21             public static Color color2 = Color.FromArgb(188, 143, 143);
22             public static Color color3 = Color.FromArgb(139, 69, 19);
23         }        

1. `currentBtn` 和 `leftBorderBtn` 是私有变量,用于记录当前选中的按钮和左侧边框的位置。
2. 在构造函数中,创建一个新的 `Panel` 控件 `leftBorderBtn`,并设置其大小为 `(7, 50)`,然后将其添加到 `panelMenu` 控件中。
3. `RGBColor` 是一个结构体,用于存储颜色常量。
4. `Text` 属性设为空字符串,`ControlBox` 属性设为 `false`,`DoubleBuffered` 属性设为 `true`,`MaximizedBounds` 属性设为当前屏幕的工作区域,用于防止窗口最大化时超出屏幕边界。

按钮”监控“的后台代码如下:

        private void iconButton2_Click(object sender, EventArgs e)
        {
            ActivateButton(sender, RGBColor.color1, RGBColor.color2, RGBColor.color3);
        }

 

标签:高亮,currentBtn,Color,leftBorderBtn,private,按钮,RGBColor,Winform,图标
From: https://www.cnblogs.com/davisdabing/p/17810565.html

相关文章

  • C# winform捕获程序异常内容
    staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.ThreadException+=Application_ThreadException;Application.Run(newForm1());}privatestaticvoidApplication_Threa......
  • Layui自定义icon图标
    在使用Layui进行开发时,会使用:<iclass="layui-icon">&#xe60c;</i>或者<iclass="layui-iconlayui-icon-face-smile"style="font-size:30px;color:#1E9FFF;"></i>进行图标的引入,但是官方给的图标毕竟有限,有时候没有自己想要的,但在阿里巴巴矢量图标库(ht......
  • c# winform获取gridview数据
    //取单元格数据三种方法this.dataGridView1[e.ColumnIndex,e.RowIndex].Value.ToString();//第一种取法this.dataGridView1.Rows[e.RowIndex].Cells["你所要取值的列名称"].Value.ToString();//第二种取法this.dataGridView1.Cur......
  • C# winform控件大小跟随窗体大小改变
    intiFormWidth,iFormHeight;//初始窗体宽高//窗体加载事件privatevoidForm1_Load(objectsender,EventArgse){iFormWidth=this.Width;//初始宽iFormHeight=this.Height;//初始高WriteIn_Tags(this);//记录初始控件信息}//调整控件大小事件privat......
  • Android 11 下拉菜单长按WiFi图标SystemUI ANR
    bug描述:(MTK)--Android11的SystemUI下拉菜单长按图标(tiles)导致SystemUI崩溃重启。10-0108:01:11.23657925833EAndroidRuntime:FATALEXCEPTION:AsyncTask#110-0108:01:11.23657925833EAndroidRuntime:Process:com.android.systemui,PID:579210-0108......
  • qt按键图标大小和设置大小不符的问题记录
    问题描述:在导航栏中有几个toolbuttoon,ui文件设置的控件大小相同但图标大小不同问题解决:经过排查,图片和ui文件没有问题,最后发现qss样式中border-image,background-image和image对于相同图标会显示出不同大小。#background-image只根据图片资源的大小,不按照控件的大小,相对于控......
  • 去除WinForm程序中的Devexpress弹窗
    去除WinForm程序中的Devexpress弹窗///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(){if(!CheckInstance()){Application.Exit();......
  • 在线直播系统源码,vue实现搜索文字高亮功能
    在线直播系统源码,vue实现搜索文字高亮功能1、在页面中使用v-html渲染 <template> <divclass="box">  <!--搜索框-->  <divclass="mySearch">   <van-search    v-model="PopUpSarCh"    show-action    placeholder=&......
  • pom.xml图标变成蜘蛛
    pom.xml变成了了蜘蛛解决办法打开工具栏view下的ant把pom.xmlremove......
  • HarmonyOS鸿蒙原生应用开发设计- 元服务(原子化服务)图标
    HarmonyOS设计文档中,为大家提供了独特的元服务图标,开发者可以根据需要直接引用。开发者直接使用官方提供的元服务图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的元服务图标侵权意外情况等,减少自主创作元服务图标的工作量。当然,如果有个性化的自主又有......