winform DataGridView-----1
winform 中的列表展示一般是ListView控件和DataGridView控件。这次就简单的介绍一下DataGridView,不得不说winform的列表展示,如果自己不去润色和扩展,原始的是真的丑。但是说实话
很多大佬都是自定义控件,人家做的效果是相当的棒。我是初学者,可没有这本是。所以为了让列表展示稍微看的过去,我只能稍微润色一下了。哈哈哈哈
DataGridView简单封装:
/// <summary> /// dataGridView设置 /// </summary> public static class SetDataGridView { /// <summary> /// 表头设置 /// </summary> /// <param name="gridView"></param> /// <param name="dicTitle"></param>t public static void SetHeader(this DataGridView gridView, List<dataGridViewModel> viewModel) { foreach (var item in viewModel) { switch (item.colType) { case ColType.文本: gridView.Columns.Add(item.colName, item.colTitle); break; case ColType.图标: gridView.SetImage(); break; case ColType.按钮: gridView.SetButton(item.TitleData); break; default: break; } } } /// <summary> /// 对某些列进行列宽设置 /// </summary> /// <param name="gridView"></param> /// <param name="colWidth"></param> public static void SetColWidth(this DataGridView gridView, Dictionary<int, int> colWidth) { foreach (int key in colWidth.Keys) { gridView.Columns[key].Width = colWidth[key]; } } /// <summary> /// 设置隐藏某一列 /// </summary> /// <param name="gridView"></param> /// <param name="colVisible"></param> public static void SetColVisible(this DataGridView gridView, string[] colVisible) { for (int i = 0; i < colVisible.Length; i++) { gridView.Columns[colVisible[i]].Visible = false; } } /// <summary> /// 列表添加操作按钮 /// </summary> /// <param name="gridView"></param> public static void SetButton(this DataGridView gridView, Title title) { if (title == null) { return; } DataGridViewButtonColumn select = new DataGridViewButtonColumn { Name = title.headTitle, Text = title.Text, UseColumnTextForButtonValue = true, DataPropertyName = "operate", FillWeight = 5, HeaderText = title.headText }; select.FlatStyle = FlatStyle.Flat; select.Width = 20; select.DefaultCellStyle.ForeColor = string.IsNullOrEmpty(title.color) ? Color.Black : SetColor.colorHx16toRGB(title.color); gridView.Columns.Add(select); } /// <summary> /// 列表添加图片 /// </summary> /// <param name="gridView"></param> public static void SetImage(this DataGridView gridView) { DataGridViewImageColumn Imange = new DataGridViewImageColumn(); Imange.ImageLayout = DataGridViewImageCellLayout.Zoom; // Imange.HeaderText = "图标"; gridView.Columns.Add(Imange); } /// <summary> /// 表头颜色设置 /// </summary> public static void SetHeadColor(this DataGridView gridView, string color) { //设置行表头的颜色 gridView.EnableHeadersVisualStyles = false; gridView.ColumnHeadersDefaultCellStyle.BackColor = SetColor.colorHx16toRGB(color); } /// <summary> /// 表头颜色设置 /// </summary> public static void SetHeadColor(this DataGridView gridView, int R, int G, int B) { //设置行表头的颜色 gridView.EnableHeadersVisualStyles = false; gridView.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(R, G, B); } /// <summary> /// 设置表头文字颜色 /// </summary> /// <param name="gridView"></param> /// <param name="fontcolor"></param> public static void SetHeadFontColor(this DataGridView gridView, string fontcolor) { //表头文字颜色 gridView.ColumnHeadersDefaultCellStyle.ForeColor = SetColor.colorHx16toRGB(fontcolor); } /// <summary> /// 设置表头文字颜色 /// </summary> /// <param name="gridView"></param> /// <param name="fontcolor"></param> public static void SetHeadFontColor(this DataGridView gridView, int R, int G, int B) { //表头文字颜色 gridView.ColumnHeadersDefaultCellStyle.ForeColor = Color.FromArgb(R, G, B); } /// <summary> /// 设置文字类型 /// </summary> /// <param name="gridView"></param> /// <param name="fontType"></param> public static void SetHeadFontType(this DataGridView gridView, Font fontType) { //行表头文字类型 gridView.ColumnHeadersDefaultCellStyle.Font = fontType; } /// <summary> /// 设置表头行高0 /// </summary> /// <param name="gridView"></param> /// <param name="rowHeight"></param> public static void SetHeadRowHeight(this DataGridView gridView, int rowHeight) { //改变标题的行高 gridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing; gridView.ColumnHeadersHeight = rowHeight; } /// <summary> /// 居中标题 /// </summary> /// <param name="gridView"></param> public static void SetHeadCenter(this DataGridView gridView) { gridView.AutoSize = false; //标题居中 gridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; } /// <summary> /// 去除第一列空列 /// </summary> /// <param name="gridView"></param> public static void SetRowHeadersVisible(this DataGridView gridView) { gridView.RowHeadersVisible = false; } /// <summary> /// 去除最后一行空行 /// </summary> /// <param name="gridView"></param> public static void SetAllowUserToAddRows(this DataGridView gridView) { gridView.AllowUserToAddRows = false; } public static void SetCellRowFull(this DataGridView gridView) { gridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; } }
颜色转换:
/// <summary> /// 颜色转换 /// </summary> public class SetColor { public static Color colorHx16toRGB(string strHxColor) { try { if (strHxColor.Length == 0) {//如果为空 return Color.FromArgb(0, 0, 0);//设为黑色 } else {//转换颜色 return Color.FromArgb(System.Int32.Parse(strHxColor.Substring(1, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(3, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(5, 2), System.Globalization.NumberStyles.AllowHexSpecifier)); } } catch {//设为黑色 return Color.FromArgb(0, 0, 0); } } }
枚举:
public enum ColType { 文本, 图标, 按钮 }
Model:
public class dataGridViewModel { public string colName { get; set; } public string colTitle { get; set; } public ColType colType { get; set; } public Title TitleData { get; set; } } public class Title { public string headTitle { get; set; } public string Text { get; set; } public string headText { get; set; } public string color { get; set; } }
c测试:
//设置行表头的颜色 //dataGridView_Mark.SetHeadColor("#F5F5F5"); dataGridView1.SetHeadColor(250, 250, 250); //表头文字颜色 // dataGridView_File2.SetHeadFontColor("#F5F5F5"); dataGridView1.SetHeadFontColor(95, 95, 95); //行表头文字类型 dataGridView1.SetHeadFontType(new Font("楷体", 8, FontStyle.Bold)); //改变标题的行高 dataGridView1.SetHeadRowHeight(30); //去除第一列空列 dataGridView1.SetRowHeadersVisible(); //行占满 dataGridView1.SetCellRowFull(); //去除最后一行空行 dataGridView1.SetAllowUserToAddRows(); //标题居中 dataGridView1.SetHeadCenter(); List<dataGridViewModel> viewModel = new List<dataGridViewModel>() { new dataGridViewModel(){colName="title",colTitle="标题",colType=ColType.文本}, new dataGridViewModel(){colType=ColType.图标}, new dataGridViewModel(){colName="title1",colTitle="标题",colType=ColType.文本}, new dataGridViewModel(){colName="title2",colTitle="标题",colType=ColType.文本}, new dataGridViewModel(){colName="title3",colTitle="标题",colType=ColType.文本}, new dataGridViewModel(){colName="title4",colTitle="标题",colType=ColType.文本}, new dataGridViewModel(){colName="title5",colTitle="标题",colType=ColType.文本}, new dataGridViewModel(){ colType = ColType.按钮,TitleData=new Title(){ headTitle="btnfile4",Text="按钮",headText="操作" } }, }; dataGridView1.SetHeader(viewModel); //设置某列隐藏 // dataGridView_ReportList.SetColVisible(new string[] { "PKID", "customer" }); Dictionary<int, int> colWidth = new Dictionary<int, int>() { [1] = 30, [7] = 50, }; ////设置列宽 dataGridView1.SetColWidth(colWidth); Image image = Properties.Resources.excel; for (int i = 0; i < 20; i++) { dataGridView1.Rows.Add("123", image, "123", "123", "123", "123", "123"); }
效果:
.Net Core