C# 如何在C中调整datagridview中的列大小#
我使用以下方法从SQL填充datagridviewC# 如何在C中调整datagridview中的列大小#,c#,datagridview,C#,Datagridview,我使用以下方法从SQL填充datagridview public bool _MFillGridView(string pQuery, ref DataGridView _pDgv) { using (DataTable dt = new DataTable()) { using (SqlConnection con = new SqlConnection(_CObjectsofClasses._obj_CConnectionString._MGetConnect
public bool _MFillGridView(string pQuery, ref DataGridView _pDgv)
{
using (DataTable dt = new DataTable())
{
using (SqlConnection con = new SqlConnection(_CObjectsofClasses._obj_CConnectionString._MGetConnectionString()))
{
using (SqlCommand cmd = new SqlCommand(pQuery, con))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
_pDgv.DataSource = dt;
_pDgv.Cursor = System.Windows.Forms.Cursors.Default;
}
}
}
foreach (DataColumn DC in dt.Columns)
{
_pDgv.Columns[DC.ColumnName].SortMode = DataGridViewColumnSortMode.NotSortable;
if (DC.DataType == typeof(DateTime))
{
_pDgv.Columns[DC.ColumnName].DefaultCellStyle = new DataGridViewCellStyle { Format = _pDateFormat };
_pDgv.Columns[DC.ColumnName].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
else if (DC.DataType == typeof(decimal))
{
_pDgv.Columns[DC.ColumnName].DefaultCellStyle = new DataGridViewCellStyle { Format = _CObjectsofClasses._obj_CNumbricFunction._MFormatNo("0") };
}
}
}
return true;
}
在这里,我是这样使用的
_MFillGridView("My SQL query here", ref MydatagridviewToFill);
上面的代码工作得很好,但我面临列宽问题。我想传递列索引和DataGridViewAutoSizeColumnMode
以及列宽来调整列的大小,如
coloumn[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
coloumn[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
coloumn[2].Width = 200;
所有其他未提供的列应设置为AutoSizeMode=DataGridViewAutoSizeColumnMode.NotSet代码>
请建议我修改代码。基于我对上述问题的理解,我相信这就是您想要的
private void ResizeColumns(DataGridView gridview, int column, int width, DataGridViewAutoSizeColumnMode mode)
{
for (int i = 0; i < gridview.ColumnCount; i++)
{
if (i.Equals(column))
{
gridview.Columns[i].AutoSizeMode = mode;
gridview.Columns[i].Width = width;
}
else
{
gridview.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
}
}
}
private void ResizeColumns(DataGridView gridview、int column、int width、DataGridViewAutoSizeColumnMode)
{
对于(int i=0;i
更新
好的,我仍然不确定我是否理解你的意图,但我认为这可能会为你指明正确的方向
public bool _MFillGridView(string pQuery, ref DataGridView _pDgv, int columnIndex, int width)
{
using (var dt = new DataTable())
{
// ... Code to retrieve data from Database ...
for (var i = 0; i < dt.Columns.Count; i++)
{
var column = dt.Columns[i];
if (column.DataType == typeof (DateTime))
_pDgv.Columns[column.ColumnName].DefaultCellStyle = new DataGridViewCellStyle {Format = _pDateFormat};
else if (column.DataType == typeof (decimal))
_pDgv.Columns[column.ColumnName].DefaultCellStyle = new DataGridViewCellStyle {Format = _CObjectsofClasses._obj_CNumbricFunction._MFormatNo("0")};
// Do your DataGridView formatting here
if (_pDgv.Columns[column.ColumnName].Index.Equals(columnIndex)) // Check your Column index on the control
{
_pDgv.Columns[column.ColumnName].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
else
{
_pDgv.Columns[column.ColumnName].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
_pDgv.Columns[column.ColumnName].Width = width;
}
}
}
return true;
}
public bool\u MFillGridView(字符串pQuery,ref DataGridView\u pDgv,int columnIndex,int width)
{
使用(var dt=new DataTable())
{
//…从数据库检索数据的代码。。。
对于(var i=0;i
我用@Mo Patel解决了我的问题,我只是将int columnIndex,int width改为List columnIndex,List width这是一列(不是你一直拼写的冒号),你是对的,但这只是一列,而不是多列……请参考我在示例中的问题,我使用的是3列,即[0]列[1]列[2]。我想传递列列表、宽度列表、自动缩放模式列表“仅1列”是什么意思?它是一个循环,因此所有列都将以某种方式处理。另一方面,如果您的意思是您只希望格式化特定的列列表,那么我可以为您更新方法是的,先生,我希望在MFillGridView方法中传递参数,并且您提供的循环应该在MFillGridView中。我怎么做,请更新你的答案。好的,我已经更新了代码,仍然不确定你指的是什么参数。好的,我用你的代码解决了我的问题,我只是将int columnIndex,int width更改为List columnIndex,List width。谢谢你的帮助和+1