【发布时间】:2014-05-21 13:50:00
【问题描述】:
当我的数据网格视图中的下拉组合框的编辑控件浮出水面,并且用户扩大宽度时,会出现一个辅助组合框。
这似乎不是由 AutoGeneratedColumns 引起的,因为我将其设置为 false。
protected override void OnCellPainting(DataGridViewCellPaintingEventArgs e)
{
base.OnCellPainting(e);
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
DataGridViewRow currentRow = this.Rows[e.RowIndex];
DataGridViewCell currentCell = currentRow.Cells[e.ColumnIndex];
DataItem item = currentRow.DataBoundItem as DataItem;
if (item != null)
{
if (new string[] { "Property1", "Property2" }.Contains(this.Columns[e.ColumnIndex].DataPropertyName))
{
EnableDisableCell(currentCell, item);
}
}
}
}
private void EnableDisableCell(DataGridViewCell cell, DataItem boundItem)
{
if (cell != null)
{
switch (cell.OwningColumn.DataPropertyName)
{
case "Property1":
if (boundItem.AllowP1Assignment)
{
cell.Enable();
}
else
{
cell.Disable();
}
break;
case "Property2":
if (boundItem.AllowP2Assignment)
{
cell.Enable();
}
else
{
cell.Disable();
}
break;
default:
break;
}
}
}
编辑:
EnableDisableCell() 方法似乎不是罪魁祸首。我将其注释掉并看到了相同的工件。
【问题讨论】:
-
这只是绘画错误还是两者都起作用?
-
@Taw:似乎是一个绘制错误,因为下拉菜单始终与左侧垂直列线齐平(并且从不与右侧组合框齐平)。此外, OnPaint 调用始终具有相同的 this.GetHashCode() 值。 OnPaint 调用之间的宽度也不同。
-
也许使 DGV 或单元区域无效会使其消失..?但是在 Paint 事件中更改 Cell 的启用状态对我来说确实很可疑。这应该发生在任何绘画之前..
标签: c# winforms datagridview .net-3.5 datagridviewcomboboxcell