private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { if (infos[e.RowIndex].HaveDetails == "不存在") //此条件会导致无限的刷新 { dgv.Rows[e.RowIndex].Cells[11] = new DataGridViewTextBoxCell(); dgv.Rows[e.RowIndex].Cells[11].Value = "无"; } }
原因: new DataGridViewTextBoxCell() 程序导致 dgv_RowPrePaint事件重绘,所以就进入了无休止的 刷新
正确代码
private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { if (infos[e.RowIndex].HaveDetails == "不存在"&& dgv[11, e.RowIndex].GetType() == typeof(DataGridViewButtonCell)) { dgv.Rows[e.RowIndex].Cells[11] = new DataGridViewTextBoxCell(); dgv.Rows[e.RowIndex].Cells[11].Value = "无"; } }
附添加按钮程序
DataGridViewButtonColumn btn = new DataGridViewButtonColumn(); btn.Name = "Details"; btn.HeaderText = "查看详情"; btn.DefaultCellStyle.NullValue = ""; btn.Width = 45; dgv.Columns.Add(btn);
按钮点击事件
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { int index = dataGridView1.SelectedCells[0].RowIndex; var id = filesdt.Rows[index][0].ToString(); if (this.dataGridView1.Columns[e.ColumnIndex].Name == "down") { } else if (this.dataGridView1.Columns[e.ColumnIndex].Name == "del") { } }
技术交流qq群:143280841
分类:
winform sunnyui
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2016-11-25 c#在主窗体panel 容器内嵌入另一个窗体(子窗体)的实现