gpt4 book ai didi

c# - 如何在 C# 中调整 datagridview 中的列的大小

转载 作者:行者123 更新时间:2023-11-30 22:03:07 25 4
gpt4 key购买 nike

我正在使用以下方法从 SQL 填充 datagridview

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

更新

好吧,我仍然不确定我明白你在追求什么,但我认为这可能会为你指明正确的方向

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

关于c# - 如何在 C# 中调整 datagridview 中的列的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26283517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com