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 如何恰当地显示我的枚举等等。但是,描述我的枚举的文字将被缩短,只有在我打开下拉菜单然后离开该控件时才会展开。
我也尝试手动设置宽度(如注释掉的行所示),但没有效果
我的网格视图中有两列这样的列。
我错过了什么吗?
【问题讨论】:
您还尝试过哪些其他DataGridViewAutoSizeColumnMode
s?此外,我认为您的评论语句不起作用的原因是您使用了 autosizemode。你不能覆盖它...
全部。每个人都表现出相同的行为。使用注释语句时,我将“AutoSizeMode”设置为“None”。
如果省略第 7 行和第 8 行,而改用第 9 行会发生什么?
嗯,它必须使用其中一种模式。不能为空。
好的,那么 autosize none 和 calculateFromEnum 怎么样?抱歉,我只是在猜测,但我不知道你尝试了什么,我看不出有什么问题......
【参考方案1】:
我的方法全错了。
我正在调整我删除的列的宽度
dataGridView.Columns.Remove(dataGridView.Columns["MyPropertyName"]);
相反,我应该使用 comboBoxColumn
设置列宽:
comboBoxColumn.Width = whateverWidthIwant;
感谢大家的帮助!
【讨论】:
以上是关于DataGridViewComboBoxColumn 自动调整大小不正确或仅在选择时正确的主要内容,如果未能解决你的问题,请参考以下文章