动态编写的DataGridView列ReadOnly属性不起作用

时间:2013-02-26 08:41:15

标签: c# datagridview readonly

我在表单加载中将ReadOnly属性写为true

dgvDcNon.Columns["itemDiscrip"].ReadOnly = true;

但该物业无效。我应该采取更多措施来实施吗?

我在editcontrolshowing事件中将自动完成模式设置为datagridview。这有什么原因吗? 我的代码是

           if (e.Control is TextBox)
            {
                TextBox tbValid = e.Control as TextBox;
                tbValid.KeyPress += new KeyPressEventHandler(tbValid_KeyPress);
            }
            String[] strAutoCmp = prodctsDCCls.AutoCmpltPrdct();
            TextBox txtAuto = e.Control as TextBox;
            txtAuto.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            txtAuto.AutoCompleteSource = AutoCompleteSource.CustomSource;

            if (this.dgvDcNon.Columns[this.dgvDcNon.CurrentCell.ColumnIndex].Name == "itemDiscrip")
            {
                var name = new AutoCompleteStringCollection();
                name.AddRange(strAutoCmp);
                if (txtAuto != null)
                {
                    txtAuto.AutoCompleteCustomSource = name;
                }
            }
            else
            {
                txtAuto.AutoCompleteCustomSource = null;
            }

1 个答案:

答案 0 :(得分:0)

它可能与数据源有关吗? 如果数据源是只读的,则无法更改此内容。

<强> EDITED

如果您使用数据库模型,EX:

Class Item
{
    public string itemId {get; set;}
    public string itemName {get; set;}
    public string itemDiscrip {get; set;}
    public int itemSize {get; set;}
    //whatever
}

尝试从代码中删除setter:

public int itemSize {get; set;}

应该成为

public int itemSize {get;}

如果您有其他类型的数据源,请尝试使用readonly修饰符。