经过一点调查后,我找到了答案。
我将数据源设置为datagridview的组合框列。因此,在设置数据源后,我在数据表中找到设置为该列的DisplayMember的值的最大项目的宽度。我使用上面给出的链接中提到的相同逻辑,而不是在DropDown事件中进行,我在设置数据源时一次性完成。在我的问题上面给出的链接是每次显示下拉列表时设置下拉列表的宽度。所以,我的方法看起来不错。
在这里,我是如何做到了这一点:
// This line is picked up from designer file for reference
DataGridViewComboBoxColumn CustomerColumn;
DataTable _customersDataTable = GetCustomers();
CustomerColumn.DataSource = _customersDataTable;
CustomerColumn.DisplayMember = Customer_Name;
CustomerColumn.ValueMember = ID;
var graphics = CreateGraphics();
// Set width of the drop down list based on the largest item in the list
CustomerColumn.DropDownWidth = (from width in
(from DataRow item in _customersDataTable.Rows
select Convert.ToInt32(graphics.MeasureString(item[Customer_Name].ToString(), Font).Width))
select width).Max();
请添加您的代码在这里 – 2010-10-11 11:50:26
@Vyas:你能告诉我你想要的这里的代码?我希望我清楚我的问题,我想为datagridview中的combobox列设置下拉列表的宽度。你想让我创建datagridview和combobox列的代码吗?或者在普通组合框中设置下拉列表的自动大小的代码? – JPReddy 2010-10-11 12:21:27