【问题标题】:DataGridView Column Header to include text AND check box包含文本和复选框的 DataGridView 列标题
【发布时间】:2014-09-15 16:56:17
【问题描述】:

我有两列用于“构建”和“发布”的复选框。我希望每个标题都显示“构建 []”和“发布 []”,其中 [] 是一个复选框,允许用户选择或取消选择相应列中的所有复选框。 优先级:如何在不创建新类或添加图像的情况下实现这一目标? LAST RESORT:如果这不可能,您能指导我构建适当的类吗?提前致谢!

【问题讨论】:

标签: c# .net checkbox datagridview columnheader


【解决方案1】:

您可以使用两个常规的CheckBoxes 并将它们添加到DataGridView

cbx_Build.Parent = dataGridView1;
cbx_Build.Location = new Point(0, 3);
cbx_Build.BackColor = SystemColors.Window;
cbx_Build.AutoSize = false;

cbx_Publish.Parent = dataGridView1;
cbx_Publish.Location = new Point(0, 3);
cbx_Publish.BackColor = SystemColors.Window;    
cbx_Publish.AutoSize = false;

要将它们定位在 ColumnHeaders 中,请使用如下代码:

dataGridView1.CellPainting += dataGridView1_CellPainting;  


void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
  if (e.ColumnIndex == BuildIndex && e.RowIndex == 0) cbx_Build.Left = e.CellBounds.Left;
  if (e.ColumnIndex == PubIndex && e.RowIndex == 0) cbx_Publish.Left = e.CellBounds.Left;
}

如果需要,使用适当的索引来满足您的列和偏移量,以便将它们放置在更右侧。

您必须像往常一样实施您的逻辑来防止 DGV 中的值发生变化,例如在Validating 事件中..

更新:

此事件可能是一个不错的选择,甚至是更好的选择,因为它不会被如此频繁地调用;它会做,至少如果您只需要在用户更改列宽后调整位置:

private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
   cbx_Build.Left = dataGridView1.Columns[BuildIndex].HeaderCell.ContentBounds.Left;
   cbx_Publish.Left = dataGridView1.Columns[PubIndex].HeaderCell.ContentBounds.Left;
}

如果列也可以删除、添加或重新排序,这些事件也必须编写脚本:ColumnRemoved, ColumnAdded, ColumnDisplayIndexChanged。以上两行都适用。

【讨论】:

  • 谢谢!目前正在尝试这个!方法中的“构建”和“发布”是什么?复选框?
  • 对不起,只是错别字;-)
  • 我确实使用了 Color.Transparent,但目前看起来还不错!太感谢了!我如何能够使用 Build/Publish 定位它,以便如果我调整列的大小,复选框将随之而来?
  • 我添加了一个AutoSize = false 以允许更改它们的宽度,而与它的文本无关。不过,您需要决定,您想要哪个:使用列调整 TB 大小:cbx_Build.Width = e.CellBounds.Width; 或者列应该与 TextBox 一起使用:dataGridView1.Columns[1].Width = checkBox1.Width + 3; 将一个放入设置代码中,另一个放入 CellPainting..
  • 这不会改变任何东西。复选框仍位于初始化时的相同位置。当我调整列的大小时,它们仍然停留在原地,而不是与相应的列。
猜你喜欢
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
相关资源
最近更新 更多