【发布时间】:2017-10-02 06:27:39
【问题描述】:
我正在使用 Visual Studio 2010,我创建了一个数据网格视图,它有 2 列。 文本列,另一个是组合框列。
private System.Windows.Forms.DataGridViewTextBoxColumn eqNameClmn;
private System.Windows.Forms.DataGridViewComboBoxColumn ClmnCabinetOptions;
this.eqNameClmn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.eqNameClmn.DataPropertyName = "Name";
this.eqNameClmn.HeaderText = "Cabinet/Mdf";
this.eqNameClmn.Name = "eqNameClmn";
this.eqNameClmn.ReadOnly = true;
//
// ClmnCabinetOptions
//
this.ClmnCabinetOptions.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.ClmnCabinetOptions.DataPropertyName = "OptionValue";
this.ClmnCabinetOptions.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.ComboBox;
this.ClmnCabinetOptions.HeaderText = "Display Options";
ClmnCabinetOptions.DataSource=
new object[] {
"Include Blocks and Cables",
"Include Blocks",
"None"};
this.ClmnCabinetOptions.Name = "ClmnCabinetOptions";
我已经用用户必须从中选择的值填充了组合框列。 为了让我的生活更轻松,我创建了一个对象,我将在其中绑定到数据网格视图,并在用户完成时检索。
public public class NeEquipmentDgvObj {
public NeEquipment NeEquipment;
public string Name { get; set; }
public bool IncludeBlocks;
public bool IncludeCables;
public string OptionValue { get; set; }
public NeEquipmentDgvObj(NeEquipment equipmentOb) {
Name = equipmentOb.EquipmentName;
NeEquipment = equipmentOb;
IncludeBlocks = false;
IncludeCables = false;
}
}
将使用属性 OptionValue,因此当设置组合框时,该属性会在对象中设置,并且在我完成选择组合框中每个项目中的值后,我可以检索数据网格视图的数据源已绑定的列表。
我遇到了一个问题,即每当加载表单并且项目有界时,组合框不会展开以显示其中的项目。如果我预设了 OptionValue,组合框的值将设置为该 OptionValue 但不会更改,组合框也不会展开。这是什么原因造成的?
【问题讨论】:
标签: c# forms data-binding datagridview combobox