DataGridViewTextBoxCell Cell = new DataGridViewTextBoxCell(); this.dgvData.Rows[index].Cells[6] = Cell; this.dgvData.Rows[index].Cells[6].Value = ""; DataGridViewTextBoxCell Cell2 = new DataGridViewTextBoxCell(); this.dgvData.Rows[index].Cells[7] = Cell2; this.dgvData.Rows[index].Cells[7].Value = ""; this.dgvData.Rows[index].Cells[1].Style.BackColor = Color.Orange; this.dgvData.Rows[index].Cells[1].Style.Alignment = DataGridViewContentAlignment.MiddleCenter; this.dgvData.Rows[index].Cells[1].Style.Font = new System.Drawing.Font(" 宋体 ", 10, FontStyle.Bold);
时间: 2024-03-28 08:38:46 浏览: 114
这段代码是用于操作 Windows 窗体中的 DataGridView 控件。具体来说,它向该控件中的第 index 行添加了两个文本框单元格,并将它们的值设置为空字符串。同时,它还将该行第 1 列的单元格的背景颜色设置为橙色,水平对齐方式设置为居中,字体设置为宋体,大小为 10,加粗。这些操作都是通过访问 DataGridView 控件的 Rows 和 Cells 属性以及单元格的 Style 属性来实现的。
相关问题
c# datagridview第三行第三列这个cell,原来为combox,row.Cells[e.ColumnIndex] = textCell;提示SetCurrentCellAddressCore可重入调用 是什么原因
"SetCurrentCellAddressCore可重入调用" 错误通常是因为在 DataGridView 的事件处理程序中更改了当前单元格的位置,从而导致出现死循环。这可能是由于在更改单元格时触发了其他事件,导致重入调用。
要解决此问题,您可以尝试在更改单元格之前取消当前单元格的选择,以避免触发其他事件。您可以使用 `CurrentCell` 属性来取消当前选择,然后再进行单元格的更改。
以下是一个可能的解决方案:
```csharp
// 取消当前单元格的选择
dataGridView1.CurrentCell = null;
// 进行单元格的更改
DataGridViewTextBoxCell textCell = new DataGridViewTextBoxCell();
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] = textCell;
```
通过这样做,您可以避免触发其他事件并解决 "SetCurrentCellAddressCore可重入调用" 错误。
previousRow.Cells[j].Visible是只读
如果C#的DataGridView控件中的Cells[j].Visible是只读的,您可以使用以下方法来合并第二行数据相同的列并且居中:
```csharp
private void MergeRows()
{
int rowCount = dataGridView1.Rows.Count;
for (int i = rowCount - 2; i >= 0; i--)
{
DataGridViewRow currentRow = dataGridView1.Rows[i];
DataGridViewRow previousRow = dataGridView1.Rows[i + 1];
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
if (currentRow.Cells[j].Value == previousRow.Cells[j].Value)
{
// 设置当前单元格的高度为前一行单元格的高度
currentRow.Cells[j].Style.Padding = new Padding(0, 0, 0, 0);
currentRow.Cells[j].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
currentRow.Cells[j].Style.BackColor = previousRow.Cells[j].Style.BackColor;
currentRow.Cells[j].Style.ForeColor = previousRow.Cells[j].Style.ForeColor;
DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();
cell.Value = "";
cell.Style.BackColor = dataGridView1.BackgroundColor;
currentRow.Cells[j] = cell;
// 隐藏前一行单元格
previousRow.Cells.RemoveAt(j);
previousRow.Cells.Insert(j, new DataGridViewTextBoxCell());
previousRow.Cells[j].Style.BackColor = dataGridView1.BackgroundColor;
previousRow.Cells[j].Style.ForeColor = dataGridView1.BackgroundColor;
}
}
}
// 居中显示
DataGridViewCellStyle style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
col.DefaultCellStyle = style;
}
}
```
在这个方法中,我们使用RemoveAt和Insert方法来隐藏前一行单元格,以达到合并单元格的效果。我们还将前一行单元格的背景色和前景色设置为与DataGridView的背景色相同,以便它们在视觉上消失。最后,我们将所有列的单元格对齐方式设置为居中。
阅读全文