在我们的项目中,我们在运行时动态创建一个数据表,其中包含如下所示的几列
public DataSet LoadAlarmGrid(int Number, bool nodata)
{
DataSet dsAlarm = new DataSet();
DataTable dtAlarm = new DataTable();
dsAlarm.Tables.Add(dtAlarm);
dtAlarm.Columns.Add(Properties.Resources.InstName, typeof(string));
dtAlarm.Columns.Add(Properties.Resources.PinName, typeof(string));
dtAlarm.Columns.Add(Properties.Resources.DataEnable, typeof(bool));
dtAlarm.Columns.Add(Properties.Resources.DataAlarmCode, typeof(int));
dtAlarm.Columns.Add(Properties.Resources.DataAlarmType, typeof(string));
dtAlarm.Columns.Add(Properties.Resources.DataBehavior, typeof(ALARMSVCLib.tlAlarmBehavior));
dtAlarm.Columns.Add(Properties.Resources.AlarmDataRealTime, typeof(bool));
dtAlarm.Columns.Add(Properties.Resources.AlarmDataLatched, typeof(bool));
<other codes>
}
最后,显示将有 8 列。假设列名是"仪器"。在加载过程中没有问题,所有列都适合大小。如果用户手动缩小列。现在该列仅显示"Inst",现在用户双击该列以自动调整大小。但什么也没发生。
因此,当在数据表列中双击时,它应该自动调整大小。
我想你想调整DataGridView的大小。
您可以在此处找到 DataGridView 的大小调整选项。
在用户调整大小模式下,用户可以通过拖动或双击行、列或标题分隔符来调整大小。
您可以尝试在dsAlarm.Tables.Add(dtAlarm);
后添加以下代码
dtAlarm.Columns[0].Width = 80;
以下代码解决了我的问题,
private void grdAlarmData_Resizecolumns(object sender, GridResizingColumnsEventArgs args)
{
if(args.Reason == GridResizeCellsReason.DoubleClick)
{
GridRangeInfo grid = args.Columns;
grdAlarmData.Model.ResizeColumnsToFit(GridRangeInfo.Col(grid.Left), GridResizeToFitOptions.IncludeHeaders);
}
}