C# 如何自动调整Datatable列的大小

C# 如何自动调整Datatable列的大小,c#,wpf,dataset,datacolumn,C#,Wpf,Dataset,Datacolumn,在我们的项目中,我们将在运行时动态创建一个datatable,其中包含以下几列 public DataSet LoadAlarmGrid(int Number, bool nodata) { DataSet dsAlarm = new DataSet(); DataTable dtAlarm = new DataTable(); dsAlarm.Tables.Add(dtAlarm); dtAlarm.Columns.Ad

在我们的项目中,我们将在运行时动态创建一个datatable,其中包含以下几列

 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>
    }
公共数据集LoadAlarmGrid(整数,布尔节点数据)
{
数据集dsAlarm=新数据集();
DataTable dtAlarm=新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));
添加(Properties.Resources.DataBehavior,typeof(ALARMSVCLib.tlAlarmBehavior));
添加(Properties.Resources.AlarmDataRealTime,typeof(bool));
添加(Properties.Resources.AlarmDataLatched,typeof(bool));
}
最后,显示器将有8列。让我们假设一个列名为“Instrument”。加载无问题期间,所有列都适合该大小。如果用户正在手动收缩列。现在该列只显示“Inst”,现在用户双击该列以自动调整大小。但什么也没发生


因此,其目的是,当在datatable列中双击时,它应该自动调整大小。

我认为您需要调整DataGridView的大小。
您可以找到DataGridView的大小调整选项。


在“用户调整大小”模式下,用户可以通过拖动或双击行、列或标题分隔符来调整大小。

您可以尝试在
dsAlarm.Tables.add(dtAlarm)之后添加以下代码


下面的代码解决了我的问题

            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);              
                }
            }
            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);              
                }
            }