好的,为了澄清您的需求(并回答它),我认为您希望使DataGridView的宽度自动扩展,以便不会出现水平滚动条?(顺便说一下,您也可以将包含它的表单增大)
例如,现在我有:
这里有三列,分别是1、2和3。
我希望datagridview能够扩展到适合所有列的大小。
假设有更多的数据被添加进来
我可以通过这两行代码扩展单元格,
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
但我仍然会出现水平滚动条,因为DataGridView的大小没有改变,即使每列的大小已经改变。
我可以看到有一个datagridview1.Size属性和一个dataGridView1.Width属性,两者都可以使用。
还要注意一下,在第一列之前有一种奇怪的列。
因此,如果您将dataGridView1.Width设置为cols 1,2,3的大小,仍然会出现滚动条,因为在标记为“column 1”的列左侧有一种奇怪的列。我看到它的宽度为50个单位。因此,如果您使dataGridView1.Width = 50加上每个列的宽度,那么灰色的dataGridView区域将始终足够大,以包含所有列。
我画了一个datagridview和一个文本框,文本框显示了datagridview.Width和所有列的总宽度以及每个单独列的宽度。
这对我很有效。
因此,列的大小会根据其中的内容自动调整,但不仅如此..DataGridView.Width将增加50(最左边的奇怪列)加上所有其他列的大小。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace automaticallyexpanddatagridviewsizeandformsize
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int olddgvsize = dataGridView1.Width;
textBox1.Text = dataGridView1.Columns[0].Width.ToString();
int h=dataGridView1.Height;
int tw = 0;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
tw += dataGridView1.Columns[i].Width;
}
tw += 50;
dataGridView1.Size = new Size(tw, h);
dataGridView1.Width = tw;
textBox1.Text = "tw=" + tw + " " + "dgvw=" + " " +dataGridView1.Width+ " "+"col 1:" + dataGridView1.Columns[0].Width + " col 2:" + dataGridView1.Columns[1].Width + " col 3:"+ dataGridView1.Columns[2].Width;
int newdgvsize = dataGridView1.Width;
int differenceinsizeofdgv = newdgvsize - olddgvsize;
this.Width = this.Width + differenceinsizeofdgv;
}
}
}
例如,我有:
tw是所有列的总宽度(包括位于第一列左侧的奇怪列,我认为其宽度为50,但可能不是)
dgvw是dataGridView的宽度
由于上述代码,dgvw可以与tw一起扩展。
上述代码还通过dataGridView扩展的数量来扩展表单。