DatagridView Combobox扩展问题

时间:2017-05-04 07:38:14

标签: c# forms data-binding datagridview combobox

我正在使用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但不会更改,组合框将不会展开。造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

我得到了解决,事实证明我必须改变一些属性。 我在DGV上将EnableEditing设置为True,并且在整个DGV上也将read only属性设置为false。