左侧菜单栏winfrom原生重绘-

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Car
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ImageList image = new ImageList();
            image.ImageSize = new Size(1, 35);//设置每次点击view时以图片的形式
            

            ColumnHeader ch = new ColumnHeader();
            ch.Text = "首页";//表头左侧
            ch.Width = splitContainer1.Panel1.Width;
           
            

            ch.TextAlign = HorizontalAlignment.Center;
            listView1.Columns.Add(ch);//设置listview的列名,没啥用处
            listView1.SmallImageList = image;//设置每个view的显示形式
            
            LoadList();//加载一级栏目
            listView1.Width = ch.Width;//设置每个view的宽度都一致
            
            
            listView1.Items[0].BackColor = Color.LightGray;//设置主页的选中后的颜色
            //listView1.BackgroundImage = Image.FromFile(@"D:\我的c#世界\BMW\Image\1.png");
            //启动首先展示主页
            this.WindowState = FormWindowState.Maximized;//启动后窗口最大化
            


            splitContainer1.Panel2.Controls.Clear();//每次执行时清空panel2
            主页 主页 = new 主页();
            主页.Parent = splitContainer1.Panel2;
            主页.Dock = DockStyle.Fill;//设置用户控件充满panel2
            主页.Show();
        }

        /// <summary>
        /// 一级菜单
        /// </summary>
        private void LoadList()
        {
            listView1.Items.Clear();//清空菜单
            
            //添加菜单
            ListViewItem 主页 = new ListViewItem("     主页");
            ListViewItem 个人中心 = new ListViewItem("     个人中心");
            ListViewItem 管理员管理 = new ListViewItem("     管理员管理");
            ListViewItem 基础数据管理 = new ListViewItem("     基础数据管理");
            ListViewItem 论坛管理 = new ListViewItem("     论坛管理");
            ListViewItem 汽车管理 = new ListViewItem("     汽车管理");
            ListViewItem 用户管理 = new ListViewItem("     用户管理");
            ListViewItem 轮播图管理 = new ListViewItem("     轮播图管理");

            ListViewItem 重启 = new ListViewItem("     重启");
            listView1.Items.Add(主页);
            listView1.Items.Add(个人中心);
            listView1.Items.Add(管理员管理);
            listView1.Items.Add(基础数据管理);
            listView1.Items.Add(论坛管理);

            listView1.Items.Add(汽车管理);
            listView1.Items.Add(用户管理);
            listView1.Items.Add(轮播图管理);
            listView1.Items.Add(重启);
        }

        /// <summary>
        /// 二级菜单(子节点)可再继续子节点
        /// </summary>
        private void ChildList()//管理员二级菜单
        {
            listView1.Items.Clear();//清空菜单
            //添加菜单
            ListViewItem 前端管理 = new ListViewItem("     前端管理");
            ListViewItem 后端管理 = new ListViewItem("     后端管理");
            ListViewItem 返回 = new ListViewItem("     返回");
            listView1.Items.Add(前端管理);
            listView1.Items.Add(后端管理);
            listView1.Items.Add(返回);
        }
        private void ChildList1()//基础数据管理二级菜单
        {
            listView1.Items.Clear();//清空菜单
            //添加菜单
            ListViewItem 采购管理 = new ListViewItem("     采购管理");
            ListViewItem 汽车保养 = new ListViewItem("     汽车保养");
            ListViewItem 返回 = new ListViewItem("     返回");
            listView1.Items.Add(采购管理);
            listView1.Items.Add(汽车保养);
            listView1.Items.Add(返回);
        }

        /// <summary>
        /// listview的鼠标单击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView1_MouseClick(object sender, MouseEventArgs e)
        {
            foreach (ListViewItem item in listView1.Items)
            {
                item.BackColor = Color.WhiteSmoke;//遍历每个菜单栏的颜色
            }
            if (e.Button == MouseButtons.Left)
            {
                if (listView1.SelectedItems.Count > 0)
                {
                    listView1.Items[listView1.FocusedItem.Index].BackColor = Color.LightGray;//设置选中菜单栏的颜色
                    string choose = listView1.Items[listView1.FocusedItem.Index].Text;//选中菜单栏的文本
                    ChangePlanel(choose.Trim());//根据文本名称进行相应的展示
                }
            }
        }

        /// <summary>
        /// 根据文本名称进行相应的展示
        /// </summary>
        /// <param name="name"></param>
        private void ChangePlanel(string name)
        {
            switch (name)
            {
                case "主页":
                    splitContainer1.Panel2.Controls.Clear();
                    主页 zhuye = new 主页();
                    zhuye.Parent = splitContainer1.Panel2;
                    zhuye.Dock = DockStyle.Fill;
                    zhuye.Show();
                    break;
                case "个人中心":
                    splitContainer1.Panel2.Controls.Clear();
                    个人中心 geren = new 个人中心();
                    geren.Parent = splitContainer1.Panel2;
                    geren.Dock = DockStyle.Fill;
                    geren.Show();
                    break;

                case "管理员管理":
                    splitContainer1.Panel2.Controls.Clear();
                    管理员管理 guanli = new 管理员管理();
                    guanli.Parent = splitContainer1.Panel2;
                    guanli.Dock = DockStyle.Fill;
                    guanli.Show();
                    ChildList();
                    break;
                case "基础数据管理":
                    splitContainer1.Panel2.Controls.Clear();
                    基础数据管理 dateManagement = new 基础数据管理();
                    dateManagement.Parent = splitContainer1.Panel2;
                    dateManagement.Dock = DockStyle.Fill;
                    dateManagement.Show();
                    ChildList1();
                    break;
                case "论坛管理":
                    splitContainer1.Panel2.Controls.Clear();
                    论坛管理 tallManagement = new 论坛管理();
                    tallManagement.Parent = splitContainer1.Panel2;
                    tallManagement.Dock = DockStyle.Fill;
                    tallManagement.Show();
                    break;
                case "汽车管理":
                    splitContainer1.Panel2.Controls.Clear();
                    汽车管理 carManagement = new 汽车管理();
                    carManagement.Parent = splitContainer1.Panel2;
                    carManagement.Dock = DockStyle.Fill;
                    carManagement.Show();
                    break;
                case "用户管理":
                    splitContainer1.Panel2.Controls.Clear();
                    用户管理 userManagement = new 用户管理();
                    userManagement.Parent = splitContainer1.Panel2;
                    userManagement.Dock = DockStyle.Fill;
                    userManagement.Show();
                    break;
                case "轮播图管理":
                    splitContainer1.Panel2.Controls.Clear();
                    轮播图管理 pictureManagement = new 轮播图管理();
                    pictureManagement.Parent = splitContainer1.Panel2;
                    pictureManagement.Dock = DockStyle.Fill;
                    pictureManagement.Show();
                    break;


                case "二级菜单一":
                    splitContainer1.Panel2.Controls.Clear();
                    前端管理 er1 = new 前端管理();
                    er1.Parent = splitContainer1.Panel2;
                    er1.Dock = DockStyle.Fill;
                    er1.Show();
                    break;
                case "二级菜单二":
                    splitContainer1.Panel2.Controls.Clear();
                    后端管理 er2 = new 后端管理();
                    er2.Parent = splitContainer1.Panel2;
                    er2.Dock = DockStyle.Fill;
                    er2.Show();
                    break;
                case "返回":
                    LoadList();
                    break;

                case "重启":
                    try
                    {
                        Application.Restart();
                    }
                    catch (Exception)
                    {
                        System.Environment.Exit(0);
                    }
                    break;
            }
        }

    }
}   

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Winform中,要重绘表格控件,可以使用以下方法: 1. 首先,确定要重绘的表格控件,可以是DataGridView或ListView等任何支持表格展示的控件。 2. 创建一个继承自表格控件的自定义控件类,例如`CustomDataGridView`。 3. 在自定义控件类中,重写`OnPaint`方法。在方法中编写自定义的绘制逻辑,例如绘制行列的边框、绘制单元格的背景色等。 4. 在`OnPaint`方法中,可以使用`Graphics`类来进行绘制操作。可以使用`e.Graphics`获取当前绘图对象,并在该对象上进行绘画操作。 5. 在需要重绘表格的时候,调用自定义控件类的`Invalidate`方法,强制触发`OnPaint`方法进行重绘。 6. 如果需要在表格控件的事件中进行重绘,可以在事件处理程序中调用`Invalidate`方法。 例如,以下代码片段展示了一个简单的自定义DataGridView控件类: ```csharp public class CustomDataGridView : DataGridView { protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // 自定义绘制逻辑,例如绘制边框 Pen pen = new Pen(Color.Black); e.Graphics.DrawRectangle(pen, ClientRectangle); pen.Dispose(); } } ``` 然后,在使用表格控件的地方,可以使用自定义的控件类`CustomDataGridView`来代替原生的控件类,以实现重绘的效果。 需要注意的是,重绘表格控件会增加系统资源的使用,并可能影响界面的响应速度,因此应该避免过度的重绘操作。 ### 回答2: 在WinForms中,要重绘一个表格控件,可以按照以下步骤进行操作。 首先,需要创建一个继承自DataGridView的自定义控件。这个自定义控件将包含表格的所有定制逻辑。 然后,在自定义控件的构造函数中,可以设置表格的样式,如行高、列宽、表头等。 接着,可以重写OnPaint方法,以便在控件绘制时自定义绘制表格的内容。在OnPaint方法中,可以使用Graphics对象的方法绘制表格的背景、行、列、单元格内容等。 此外,还可以重写OnCellPainting方法,以便在每个单元格绘制时自定义绘制单元格的样式。在OnCellPainting方法中,可以使用Graphics对象的方法绘制单元格的边框、背景、内容等。 当需要更新表格的显示数据时,可以调用自定义控件的Refresh方法,强制重新绘制控件。在Refresh方法中,可以重新计算表格的行数、列数、内容等,然后调用自定义控件的Invalidate方法,使控件无效,从而触发重绘。 需要注意的是,在使用自定义控件时,需要将其添加到窗体或其他容器中,并设置好位置、大小等属性,才能正确显示和重绘表格。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值