c# - 在c#中合并datagridview中的列
问题描述
我的 c# winforms 上有一个 datagridview,我想合并一些列以在其上输入数据。我该怎么做?
我从网上尝试了一些代码,但有错误,它说:与事件处理程序的委托匹配的 datagridviewCellPainting 没有重载。这是我的代码:
private void General_Inventory_Load(object sender, EventArgs e)
{
dgvGenInventory.Columns.Add("JanWin", "Win");
dgvGenInventory.Columns.Add("JanLoss", "Loss");
dgvGenInventory.Columns.Add("FebWin", "Win");
dgvGenInventory.Columns.Add("FebLoss", "Loss");
dgvGenInventory.Columns.Add("MarWin", "Win");
dgvGenInventory.Columns.Add("MarLoss", "Loss");
dgvGenInventory.Columns.Add("AprWin", "Win");
dgvGenInventory.Columns.Add("AprLoss", "Loss");
dgvGenInventory.Rows.Add("1", "2", "3", "2", "2", "2", "4", "2");
for (int i = 0; i < dgvGenInventory.ColumnCount - 1; i++)
{
dgvGenInventory.Columns[i].Width = 45;
}
this.dgvGenInventory.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
this.dgvGenInventory.ColumnHeadersHeight = this.dgvGenInventory.ColumnHeadersHeight * 2;
this.dgvGenInventory.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
this.dgvGenInventory.CellPainting += new DataGridViewCellPaintingEventHandler(dgvGenInventory_CellPainting);
this.dgvGenInventory.Paint += new PaintEventHandler(dgvGenInventory_Paint);
this.dgvGenInventory.Scroll += new ScrollEventHandler(dgvGenInventory_Scroll);
this.dgvGenInventory.ColumnWidthChanged += new DataGridViewColumnEventHandler(dgvGenInventory_ColumnWidthChanged);
}
private void dgvGenInventory_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1 && e.ColumnIndex > -1)
{
Rectangle r2 = e.CellBounds;
r2.Y += e.CellBounds.Height / 2;
r2.Height = e.CellBounds.Height / 2;
e.PaintBackground(r2, true);
e.PaintContent(r2);
e.Handled = true;
}
}
我想在我的 datagridview 上看到合并的列
解决方案
我花了很长时间寻找这个,因为我的老板不想购买任何现成的组件。这应该提交到 .NET 代码中:datagridvewtextboxcell-with-span-behaviour 它可以正常工作并且使用起来非常简单。适用于 VB/C# .NET 4.5 到 6。跨行和列,包括标题。
DataGridView.Columns.Add(new DataGridViewTextBoxColumnEx());
var dataGridViewCell = (DataGridViewTextBoxCellEx)DataGridView[colIdx, rowIdx];
dataGridViewCell.ColSpan = 2;
dataGridViewCell.RowSpan = 6;
推荐阅读
- javascript - 视频结束后 Java Script Auto Next Page
- video.js - videojs:如何在“cuechange”上获取字幕的实际文本
- react-native - 在 Android 上的 React Native 中使用 Axios 上传图片
- javascript - laravel如何在highcharts饼图中添加动态数据
- excel - 打印时更新的 Excel 中的页码
- ios - 从 Firebase 查询数据并写入 UITextfield
- java - 如何做一组通用值?
- java - 如何让 android XML 或 Kotlin 按钮将我带到我在 XML 中的其他活动?
- shell - 如何在 Jenkinsfile 中使用变量运行 shell 命令
- java - Spring data JPA 消耗所有连接对象