如何在.NET Framework 3.5中自动调整DataGridView的列大小

xqkwcwgp  于 2023-05-19  发布在  .NET
关注(0)|答案(3)|浏览(141)

在.NET 4.5.1中,有一个方法可以调整DataGridView的列大小,

dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.Fill)   'Here datagridView is the Name of DataGridView Control

但是我需要在.NET 3.5中完成它(我需要它用于.NET框架中不支持的Compact Framework。所以请不要推荐使用较新的版本)。那么在.NET Framework 3.5版本中有什么方法可以做到这一点呢?

mzsu5hc0

mzsu5hc01#

我有一个仍然为.NET 2.0编译的应用程序,我使用Column集合中列的AutosizeModeFillWeight属性。查看此文档:DataGridViewColumn.AutoSizeMode Property

jyztefdp

jyztefdp2#

我用这个在3,5
DataGridViewketel.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells DataGridViewketel.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells

xu3bshqb

xu3bshqb3#

这在.Net 7.0(C# VS2022)上有效。
这将自动根据列的内容调整DataGridView的列大小。
别忘了右键单击【项目】,选择【同步命名空间】,根据您的项目更新命名空间。

namespace DiscountCard.View.CustomControl
{
    public partial class CtechDataGridView : DataGridView
    {
        public CtechDataGridView()
        {
            InitializeComponent();

            DoubleBuffered = true;
        }

        protected override void OnDataBindingComplete(DataGridViewBindingCompleteEventArgs e)
        {
            base.OnDataBindingComplete(e);

            // Fit columns
            int columnsWidth = 0;
            foreach (DataGridViewColumn column in this.Columns)
            {
                if (column.Visible)
                {
                    columnsWidth += column.Width;
                }
            }
            if (columnsWidth < this.Width)
            {
                for (int i = 0; i < this.Columns.Count; i++)
                {
                    this.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                    this.Columns[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                }
                this.Columns[this.Columns.Count - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                this.Columns[this.Columns.Count - 1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            }
            else
            {
                for (int i = 0; i < this.Columns.Count; i++)
                {
                    this.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                    this.Columns[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                }
            }
            for (int i = 0; i < this.Columns.Count; i++)
            {
                int column = this.Columns[i].Width;
                this.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                this.Columns[i].Width = column;
            }
        }

    }
}

结果:

1.内容大于DataGridView的宽度。

2.内容小于DataGridView的宽度

3.内容等于DataGridview的宽度

相关问题