gpt4 book ai didi

c# - 在不影响相邻列的情况下调整 DataGridView 列的大小?

转载 作者:行者123 更新时间:2023-11-30 18:40:06 25 4
gpt4 key购买 nike

我想实现一项功能,允许用户调整 DataGridView 列的大小,但不影响相邻列。我注意到在许多程序中,您可以调整特定列的大小,并且左侧或右侧的所有列都将保持固定大小。但这不是 .NET 中的默认行为,因为当我展开列时,右侧的列将等量压缩以解决旧列的添加大小。

有没有办法阻止这种情况发生?

编辑:

显然我没有解释清楚,所以让我们再试一次:

我有一个包含 8 列和一堆行的 DataTable。我将该 DataTable 添加为 DataGridView 的数据源。当我的表单打开时,8 列均匀分布在 DataTable 中,DataTable 设置为 AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;。我想以这种方式保留 AutoSizeColumsMode。不会调整窗体或控件的大小。只有控件内的列。

我想要的是让用户能够调整单个列(例如,第 3 列)的大小,而不影响其右侧所有列的大小。默认行为是调整所有其他列的大小以适应新的更改。但是,我希望它只立即向右调整列的大小。这样,它就不会搞砸第 8 列上设置的任何自定义尺寸。

我今天早些时候看到一个应用程序可以正确地执行此操作,但我希望我能记住它是哪个应用程序,这样我就可以截屏了。我所知道的是,当我调整表格中间一列的大小时,它并没有改变右边所有列的宽度(只有紧挨着它的一列)。

最佳答案

public partial class Form1 : Form
{
int[] w = new int[100];
public Form1()
{
InitializeComponent();
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
Shown += new EventHandler(Form1_Shown);
}

void Form1_Shown(object sender, EventArgs e)
{
dataGridView1.ColumnWidthChanged += dataGridView1_ColumnWidthChanged;

//to know what WERE the widths.
for (int i = 0; i < dataGridView1.Columns.Count; i++) w[i] = dataGridView1.Columns[i].Width;

//Won't work without this.
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
}

void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
int column = e.Column.Index;

//unsubscribe so changing will not call itself.
dataGridView1.ColumnWidthChanged -= dataGridView1_ColumnWidthChanged;

//updating width.
dataGridView1.Columns[column + 1].Width = (w[column + 1] + w[column]) - dataGridView1.Columns[column].Width;
w[column + 1] = dataGridView1.Columns[column + 1].Width;
w[column] = dataGridView1.Columns[column].Width;

//re-subscribe
dataGridView1.ColumnWidthChanged += dataGridView1_ColumnWidthChanged;
}
}

关于c# - 在不影响相邻列的情况下调整 DataGridView 列的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805942/

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