【问题标题】:How to create custom property of DataGridViewTextBoxColumn in c# win. form如何在 c# win 中创建 DataGridViewTextBoxColumn 的自定义属性。形式
【发布时间】:2015-02-14 08:22:08
【问题描述】:

如何在 DataGridViewTextBoxColumn 中创建一个名为 IsCheck(值 true/false)的属性?

我搜索了互联网,但找不到创建财产的解决方案。请帮我写一个代码 sn-p 左右。

【问题讨论】:

    标签: c# datagridview datagridviewcolumn custom-properties


    【解决方案1】:

    除了 TaW 的回复,我建议你重写 Clone() 函数以避免Designer 的麻烦。

    class myCheckedColumn : DataGridViewTextBoxColumn
    {
        public bool IsChecked { get; set; }
    
        public myCheckedColumn ()               { IsChecked = false;    }
        public myCheckedColumn (bool checked_)  { IsChecked = checked_; }
    
        public override object Clone()
        {
            myCheckedColumn clone = (myCheckedColumn)base.Clone();
            myCheckedColumn.IsChecked = IsChecked;
            return clone;
        }
    }
    

    【讨论】:

    • 添加 Clone() 方法后,我可以在 PropertyGrid 中设置自定义属性。但是我发现DataGridViewCell也有Clone()方法,微软复制DataGridViewCell.Clone()中的属性。
    【解决方案2】:

    好吧,你可以用通常的方式创建它:

    class myCheckedColumn : DataGridViewTextBoxColumn
    {
        public bool IsChecked { get; set; }
    
        public myCheckedColumn ()               { IsChecked = false;    }
        public myCheckedColumn (bool checked_)  { IsChecked = checked_; }
    }
    

    现在将其添加到DataGridView DGV 的Columns 集合中:

        myCheckedColumn checkColumn = new myCheckedColumn (true);
        checkColumn.Name = "checkColumn";
        checkColumn.HeaderText = "some Title";
        checkColumn.MinimumWidth = 120;
        DGV.Columns.Insert(someindex, checkColumn);
    

    最后我们可以测试一下:

    private void DGV_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        int col = e.ColumnIndex;
        myCheckedColumn column = DGV.Columns[col] as myCheckedColumn ;
        if (column != null) 
        {
          Console.WriteLine(column.IsChecked.ToString());
          column.IsChecked = !column.IsChecked;
        }
    } 
    

    注意:这是Column,正如您所要求的,而不是Cell!因此,该列的每个插入实例都有一个值。要创建自定义 DataGridViewTextBoxCell,您几乎可以这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-20
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多