在代码中设置DataGridView行高并禁用手动调整大小

20
在我的网格中,我有以下禁用用户手动调整大小的代码行:
dgvTruckAvail.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

我需要在代码中设置列高度,但无法实现(参见DataGridView设置行高不起作用

我想这行代码导致了尺寸大小的问题。然而,现在我需要找出如何:

  1. 通过代码调整行高

以及

  1. 防止用户自行调整行高

有什么提示吗?

4个回答

40

集合:

dgvTruckAvail.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
dgvTruckAvail.AllowUserToResizeRows = false;

这将禁用自动调整行高和手动调整行高。要设置行高度,您可以使用 RowTemplateHeightMinimumHeight 属性。


谢谢!一开始它没有起作用,但后来我注意到在RowTemplate中设置了另一个属性。 - katit
我发现在将DataGridView.Visible设置为True之前,设置Row.Height是无效的。因此,我将Row.Height代码放在VisibleChanged事件处理程序中。 - gmlobdell
'private void Dgv_VisibleChanged(object sender, EventArgs e) { if (sender is DataGridView && ((DataGridView)sender).Visible) { DataGridView dgv = sender as DataGridView; SetRowHeight(dgv); } }' '私有空类型 Dgv_VisibleChanged(object sender, EventArgs e) { 如果(sender 是 DataGridView 且 ((DataGridView)sender).Visible) { DataGridView dgv = sender as DataGridView; SetRowHeight(dgv); } }' - gmlobdell
标题行怎么样? - Bitterblue
2
这对我有用:dgv.RowTemplate.Resizable = DataGridViewTriState.False; - Ezequiel Adrian

3

设置行大小是一个真正的挑战。在网上检查有多少抱怨和回应。我发现有时候一种方法有效,而其他时候它不再有效。

按照以下步骤进行操作: 在窗体上放置一个DataGridView。 编辑并添加几列。这不重要,因为您很快就会丢弃这个DGV。 进入此DataGridView的属性并编辑RowTemplate/Height以设置较小或较大的值(只是为了让您看到它工作)。在您的方法中添加一行代码,将XXX.RowCount设置为类似于12的值,以填充此测试DataGridView。运行代码以验证行高度是否已更改。

打开XXX.Designer.cs代码。展开“Windows窗体设计器生成的代码”,查找与您刚刚使用DataGridView所做的事情相关的代码。将其全部复制到您尝试调整/设置行高度的方法中。注释掉您的所有代码。逐行修改自动生成的代码,以使用您对象的名称。反复测试是否存在任何故障,并在那时进行隔离。
现在返回并删除此测试DataGridView对象。


1
在属性窗口中设置:
AllowUserToResizeRows = False

0
这对我有效: 1. 打开包含GridView的窗体的.Designer.cs文件 2. 返回GridView设计并编辑所需的任何属性 3. 两个选项卡都将显示已修改的*。 4. 完成
我猜已修改的状态不会触及.Designer.cs文件,因此我们在设计器中所做的修改不会应用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接