DataGridView 控件操作大全 (内容居中显示,右键绑定菜单)
DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter '标题居中
DataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter '内容居中
this.dataGridView1.AutoGenerateColumns = false; //让它不自己产生多余的列
// this.dataGridView1.AutoSizeColumnsModel = Fill //列名占满容器
this.dataGridView1.AutoSizeColumnsModel = AllCells //列名占满容器
#region [DataGridView控件单元格点击事件,绑定右键菜单] private void dataGridView_Score_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { //绑定右键菜单 dataGridView_Score.SelectedRows[0].ContextMenuStrip = this.contextMenuStrip1; } } #endregion
DataGridView单元格内容显示格式化:代入
Dictionary<string,string>方法
private void dataGridView_Score_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { Dictionary<string,string> scoreStatus = GetScoreStatus(); if (e.ColumnIndex == 7) { e.Value = scoreStatus[e.Value.ToString()]; e.FormattingApplied = true; } }
#region [设定ComboBox数据源] private Dictionary<string, string> GetScoreStatus() { Dictionary<string, string> dic = new Dictionary<string, string> { {"2", "全部"}, {"1", "成功"}, {"0", "失败"} }; return dic; } #endregion
获取DataGridView选中数据, 返回对象:
#region[获取DataGridView的选中行数据] /// <summary> /// 获取当前选中行的数据 /// </summary> /// <returns>当前选中行数据</returns> private JudgeSetting GetSelectRowInfo() { DataGridViewRow selectRows = dataGridView_Judge.SelectedRows[0]; JudgeSetting setting = new JudgeSetting(); if (selectRows != null) { // 项目代码 setting.Ksxmdm = Convert.ToInt32(selectRows.Cells["项目代码"].Value); // 项目名称 setting.Gakfmc = Convert.ToString(selectRows.Cells["项目名称"].Value); } return setting; } #endregion
替换DataGridView头部显示,
#region[替换DataTable头] /// <summary> /// 替换DataTable头 /// </summary> /// <param name="dt">查询出的DataTable</param> /// <returns></returns> private DataTable ReplaceDataTableHead(DataTable dt) { dt.Columns[0].ColumnName = "项目代码"; dt.Columns[1].ColumnName = "项目名称"; dt.Columns[2].ColumnName = "扣分项目"; return dt; } #endregion #region[DataTable样式调整] /// <summary> /// DataTable样式调整 /// </summary> private void ChangeDataTableStyle() { // KEY列隐藏 this.dataGridView_Judge.Columns[10].Visible = false; this.dataGridView_Judge.Columns[9].Visible = false; //this.dataGridView_Judge.Columns[0].Width = 80; //this.dataGridView_Judge.Columns[1].Width = 100; this.dataGridView_Judge.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; } #endregion
绑定dataTable到DataGridView
#region[绑定dataTable到DataGridView] /// <summary> /// 绑定dataTable到DataGridView /// </summary> /// <param name="dt">源DataTable</param> private void BindDataTble(DataTable dt) { if (toolStripComboBox1.Text != "全部") { DataRow[] rows = dt.Select(string.Format("GAKFMC = '{0}'", toolStripComboBox1.Text)); DataTable table = dt.Clone(); foreach(DataRow row in rows) { table.Rows.Add(row.ItemArray); } dt = table; } // 修改DataTable头部 dt = ReplaceDataTableHead(dt); // 绑定数据 this.dataGridView_Judge.DataSource = dt; // 修改DataTable样式 ChangeDataTableStyle(); // 刷新读取的条数 this.toolStripLabel4.Text = dt.Rows.Count.ToString(); } #endregion
刷新DataGridView的绑定
#region[刷新DataGridView的绑定] /// <summary> /// 刷新DataGridView的绑定 /// </summary> /// <param name="sqlEnum">查询语句</param> private void RefreshBindTable(SqlStatusEnum sqlEnum) { try { DataTable dt = QueryData(sqlEnum, null); if (dt != null && dt.Rows.Count > 0) { BindDataTble(dt); } else MessageBox.Show("查询错误,或未查询到相关数据!"); } catch (Exception ex) { LogHelper.Error(ex); } } #endregion
DataGridView控件绑定List<string>
List<Student> strList = new List<Student>() { new Student(){StuId = 1, StuName = "张三"}, new Student(){StuId = 2, StuName = "李四"}, new Student(){StuId = 3, StuName = "王五"} }; //查找出ID,并显示姓名,List<{m}>绑定到datagridview,可以把m去掉,.Select(m => new { m.StuName })这样展示就是StuName的列名 var students = strList.Where(s =>s.StuId == 2).Select(m => new { m = m.StuName }).ToList(); dataGridView1.DataSource = students; //显示出以m为列名的数据,可以手动修改列名
将dataGridView选定的行转换为实体对象
ContactModel model = dataGridView1.CurrentRow.DataBoundItem as ContactModel;
分类:
winform
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义