c# datagridview 行宽在滚动时自动增加
c# datagridview row width automatically increases on scrolling
我的 Datagridview 包含 DateTimeColumn,它在滚动时与另一个下一行列重叠。我已经将 DatagridView 属性设置为
AutoSizeColumnsMode : 填充
AutoSizeRowsMode: AllCellsExceptheaders
AllowUserstoAddRows: True
但它显示了以下结果。任何帮助都会很棒
我的代码
private void dataGridView4_CellClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.RowIndex != -1)
{
if (e.ColumnIndex == 1 || e.ColumnIndex == 2)
{
oDateTimePicker = new DateTimePicker();
dataGridView4.Controls.Add(oDateTimePicker);
oDateTimePicker.Format = DateTimePickerFormat.Short;
Rectangle oRectangle = dataGridView4.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
oDateTimePicker.Size = new Size(oRectangle.Width, oRectangle.Height);
oDateTimePicker.Location = new Point(oRectangle.X, oRectangle.Y);
oDateTimePicker.TextChanged += new EventHandler(dateTimePicker_OnTextChange);
oDateTimePicker.Visible = true;
}
}
}
catch (Exception E)
{
MessageBox.Show(E.ToString());
}
}
private void dateTimePicker_OnTextChange(object sender, EventArgs e)
{
dataGridView4.CurrentCell.Value = oDateTimePicker.Text.ToString();
}
您似乎没有使用真正的 DataGridViewColumn
,而是在 DataGridView
上方对齐一些 DateTimePicker
。
您应该创建一个自定义 DataGridViewColumn
,而不是将一些 DateTimePicker
控件对齐到 DataGridView
上方。
这是一个很好的 MSDN Example,它实现了 CalendarColumn
。
我的 Datagridview 包含 DateTimeColumn,它在滚动时与另一个下一行列重叠。我已经将 DatagridView 属性设置为
AutoSizeColumnsMode : 填充
AutoSizeRowsMode: AllCellsExceptheaders
AllowUserstoAddRows: True
但它显示了以下结果。任何帮助都会很棒
我的代码
private void dataGridView4_CellClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.RowIndex != -1)
{
if (e.ColumnIndex == 1 || e.ColumnIndex == 2)
{
oDateTimePicker = new DateTimePicker();
dataGridView4.Controls.Add(oDateTimePicker);
oDateTimePicker.Format = DateTimePickerFormat.Short;
Rectangle oRectangle = dataGridView4.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
oDateTimePicker.Size = new Size(oRectangle.Width, oRectangle.Height);
oDateTimePicker.Location = new Point(oRectangle.X, oRectangle.Y);
oDateTimePicker.TextChanged += new EventHandler(dateTimePicker_OnTextChange);
oDateTimePicker.Visible = true;
}
}
}
catch (Exception E)
{
MessageBox.Show(E.ToString());
}
}
private void dateTimePicker_OnTextChange(object sender, EventArgs e)
{
dataGridView4.CurrentCell.Value = oDateTimePicker.Text.ToString();
}
您似乎没有使用真正的 DataGridViewColumn
,而是在 DataGridView
上方对齐一些 DateTimePicker
。
您应该创建一个自定义 DataGridViewColumn
,而不是将一些 DateTimePicker
控件对齐到 DataGridView
上方。
这是一个很好的 MSDN Example,它实现了 CalendarColumn
。