我在DataGridView中有一个列类型为DataGridViewComboBoxColumn 的列。在这个组合框中,我有几个不同长度的字符串。应用程序设置中的用户可以更改其中一些字符串。它看起来像这样:
AutoCize选项列(如AllCells)可与DataGridViewTextBoxColumns很好地配合使用。但它们无法按预期使用组合框。
如何设置此列的宽度以适合组合框的内容?
答案 0 :(得分:1)
您可以使用TextRenderer.MeasureText
计算项目的宽度,并将列的宽度设置为项目宽度的最大值。
要更改列的宽度,请使用列的Width
属性。要仅更改下拉菜单的宽度,请使用DropDownWidth
属性。
c = []
for i, v in enumerate(a):
mask = True if i in b else False
c.append(mask)
您可以将上面的代码放在表单的// I suppose your column is at index 0
var c = this.dataGridView1.Columns[0] as DataGridViewComboBoxColumn;
c.Width = c.Items.Cast<Object>().Select(x => x.ToString())
.Max(x => TextRenderer.MeasureText(x, c.InheritedStyle.Font,
Size.Empty, TextFormatFlags.Default).Width);
事件处理程序中,或者放在您可能想要重置列大小的其他位置。
注意:在上面的示例中,组合框的项目应该是字符串类型。但您可以使用任何类型的项目并提取项目的文本。这里的关键点是使用带有参数的Load
。
VB版
TextRenderer.MeasureText