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; }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM