zoukankan      html  css  js  c++  java
  • WinForm里DataGridView默认样式设置(添加序号列)

     

     

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Windows.Forms;
    using ConsoleExtClass;
    using DataGridViewDemo01.Helpers;
    using MessageBoxer;
    
    namespace DataGridViewDemo01
    {
        /// <summary>
        ///     WinForm里DataGridView默认样式设置(添加序号列)
        ///     LDH @ 2021-10-22
        /// </summary>
        public partial class FrmMain : Form
        {
            #region Global Variables
    
            /// <summary>
            ///     创建学生列表
            /// </summary>
            private readonly List<Student> _list = new List<Student>();
    
            #endregion
    
            #region Constructor
    
            public FrmMain()
            {
                InitializeComponent();
            }
    
            #endregion
    
            #region My Methods
    
            /// <summary>
            ///     绑定学生列表
            /// </summary>
            private void BindStudents()
            {
                dgvStudents.DataSource = null; // 清空绑定
                dgvStudents.DataSource = _list; // 指定数据源
    
                dgvStudents.AllowUserToResizeRows = false; // 禁止用户改变DataGridView所有行的行高  
                dgvStudents.AutoGenerateColumns = false; // 禁止自动生成列
    
                #region 【LDH珍藏的样式V2021.10】
    
                // 设置样式(最爱) 
                DataGridViewHelperV2.SetStyleForDataGridView(
                    dgvStudents,
                    Color.FromArgb(192, 139, 165),
                    Color.White,
                    Color.FromArgb(213, 186, 199),
                    Color.FromArgb(249, 250, 249),
                    Color.FromArgb(238, 229, 234),
                    false,
                    Color.GhostWhite,
                    true);
    
                #endregion
            }
    
            /// <summary>
            ///     设置控件
            /// </summary>
            private void SetControls()
            {
                MaximizeBox = false; // 禁用最大化按钮
                AutoSizeMode = AutoSizeMode.GrowAndShrink; // 不让窗体右下角拖拽
    
                dgvStudents.SelectionMode = DataGridViewSelectionMode.FullRowSelect; // DataGridView 整行选取
                dgvStudents.AllowUserToAddRows = false; // 不向用户显示添加行的选项
                dgvStudents.AllowUserToResizeRows = false; // 禁止用户改变DataGridView所有行的行高  
                dgvStudents.AutoGenerateColumns = false; // 禁止自动生成列
    
                // 添加序号(最左侧列)
                //dgvStudents.RowsAdded += DgvStudents_RowsAdded;
                //dgvStudents.RowsRemoved += DgvStudents_RowsRemoved;
            }
    
            #endregion
    
            #region Form Events
    
            /// <summary>
            ///     添加学生
            /// </summary>
            private void btnAdd_Click(object sender, EventArgs e)
            {
                var stu = new Student
                {
                    StuNo = txtStuNo.Text,
                    StuName = txtStuName.Text,
                    StuSex = cboStuSex.Text,
                    StuAge = Convert.ToInt32(nupStuAge.Value)
                };
    
                _list.Add(stu);
    
                BindStudents();
    
                ConsoleExt.InfoLine("添加成功!");
                MessageTip.ShowOk("添加成功!");
            }
    
            /// <summary>
            ///     删除行
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnDelete_Click(object sender, EventArgs e)
            {
                // 共选中的行数
                var selectedRowCount = dgvStudents.SelectedRows.Count;
                if (selectedRowCount > 0)
                {
                    var dr = ShowMessage.GetUserYesOrNo("您是否要删除选择的记录呢?", "温馨提示");
                    if (dr == DialogResult.Yes)
                    {
                        // 遍历所有选中的行
                        for (var i = 0; i < selectedRowCount; i++)
                        {
                            var index = dgvStudents.SelectedRows[i].Index;
                            _list.RemoveAt(index);
                        }
    
                        // 重新绑定
                        BindStudents();
                        MessageTip.ShowOk("删除成功!");
                        ConsoleExt.InfoLine("删除成功!");
                    }
                    else
                    {
                        MessageTip.ShowOk("您取消了删除操作!");
                        ConsoleExt.WarnLine("您取消了删除操作!");
                    }
                }
                else
                {
                    tipDelete.Show("请先选择您要删除的行!", btnDelete, 0, -btnDelete.Height, 5000);
                    ConsoleExt.ErrorLine("请先选择您要删除的行!");
                }
            }
    
            /// <summary>
            ///     窗体加载事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void FrmMain_Load(object sender, EventArgs e)
            {
                SetControls();
            }
    
            /// <summary>
            ///     窗体关闭事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
            {
                var dr = ShowMessage.GetUserYesOrNo("您确定现在退出系统吗?", "温馨提示");
                if (dr == DialogResult.Yes)
                    Environment.Exit(0);
                else
                    e.Cancel = true;
            }
    
            #region 【添加序号(最左侧列)】
    
            private void DgvStudents_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
            {
                var dgv = (DataGridView)sender;
                if (dgv.Rows.Count != 0)
                {
                    for (var i = 0; i < e.RowCount; i++)
                    {
                        dgv.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
                        dgv.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();
                    }
    
                    for (var i = e.RowIndex + e.RowCount; i < dgv.Rows.Count; i++)
                    {
                        dgv.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
                        dgv.Rows[i].HeaderCell.Value = (i + 1).ToString();
                    }
                }
            }
    
            private void DgvStudents_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
            {
                var dgv = (DataGridView)sender;
                for (var i = 0; i < e.RowCount; i++)
                {
                    dgv.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
                    dgv.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();
                }
    
                for (var i = e.RowIndex + e.RowCount; i < dgv.Rows.Count; i++)
                {
                    dgv.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
                    dgv.Rows[i].HeaderCell.Value = (i + 1).ToString();
                }
            }
    
            #endregion
    
            #endregion
        }
    }
    namespace DataGridViewDemo01
    {
        public class Student
        {
            public string StuNo { get; set; }
            public string StuName { get; set; }
            public string StuSex { get; set; }
            public int StuAge { get; set; }
        }
    }

     

    踏实做一个为人民服务的搬运工!
  • 相关阅读:
    开发中的一些总结。。。
    Directory Listing Denied错误
    webservice的一些使用心得。。
    vs2005 sp1 补丁后,不能初始化
    谈C/C++指针精髓
    CString 的函数
    javaScript 中 call 函数的用法说明 & 继承
    条款12: 尽量使用初始化而不要在构造函数里赋值(effectiveC++)
    js日期时间函数(经典+完善+实用)
    学习之路一 记录学习中的手记
  • 原文地址:https://www.cnblogs.com/LifeDecidesHappiness/p/15439760.html
Copyright © 2011-2022 走看看