經過一點調查後,我找到了答案。
我將數據源設置爲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