DataGridViewComboBoxColumn 自动调整大小不正确或仅在选择时正确

Posted

技术标签:

【中文标题】DataGridViewComboBoxColumn 自动调整大小不正确或仅在选择时正确【英文标题】:DataGridViewComboBoxColumn Autosizes Incorrectly or Correctly-Only-on-Selection 【发布时间】:2012-04-10 21:01:20 【问题描述】:

我有一个 DataGridViewComboBoxColumn 对象,它用作我的 gridview 中的一列的数据源。

代码如下:

DataGridViewComboBoxColumn comboBoxColumn = new DataGridViewComboBoxColumn();

comboBoxColumn.DataSource = Enum.GetValues(typeof(MyEnums));
comboBoxColumn.DataPropertyName = "MyPropertyName";
comboBoxColumn.Name = "My Column Name";

dataGridView.Columns["MyPropertyName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
//dataGridView.Columns["MyPropertyName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
//dataGridView.Columns["MyPropertyName"].Width = CalculateColumnWidthFromEnum(typeof(MyEnums));
dataGridView.Columns.Remove(dataGridView.Columns["MyPropertyName"]);
dataGridView.Columns.Insert(1, comboBoxColumn);

我很满意 WinForms 如何恰当地显示我的枚举等等。但是,描述我的枚举的文字将被缩短,只有在我打开下拉菜单然后离开该控件时才会展开。

我也尝试手动设置宽度(如注释掉的行所示),但没有效果

我的网格视图中有两列这样的列。

我错过了什么吗?

【问题讨论】:

您还尝试过哪些其他DataGridViewAutoSizeColumnModes?此外,我认为您的评论语句不起作用的原因是您使用了 autosizemode。你不能覆盖它... 全部。每个人都表现出相同的行为。使用注释语句时,我将“AutoSizeMode”设置为“None”。 如果省略第 7 行和第 8 行,而改用第 9 行会发生什么? 嗯,它必须使用其中一种模式。不能为空。 好的,那么 autosize none 和 calculateFromEnum 怎么样?抱歉,我只是在猜测,但我不知道你尝试了什么,我看不出有什么问题...... 【参考方案1】:

我的方法全错了。

我正在调整我删除的列的宽度

dataGridView.Columns.Remove(dataGridView.Columns["MyPropertyName"]);

相反,我应该使用 comboBoxColumn 设置列宽:

comboBoxColumn.Width = whateverWidthIwant;

感谢大家的帮助!

【讨论】:

以上是关于DataGridViewComboBoxColumn 自动调整大小不正确或仅在选择时正确的主要内容,如果未能解决你的问题,请参考以下文章