1

Я хочу создать новое datagridview как usercontrol. Он будет иметь общедоступное и доступное для просмотра свойство, которое указывает, имеет ли этот datagridview столбец счетчика или нет. Если это так, то добавьте новый DataGridViewColumn с именем «Counter» в 0 индекс строк.Как добавить столбец в datagridview usercontrol C# winform

Это мой UserControl код:

public partial class UniLibDataGridView : DataGridView 
{ 
    public UniLibDataGridView() 
    { 
     InitializeComponent(); 
     if (_HasCounterColumn) 
     { 
      this.Columns.Add("Counter", "Counter"); 
     } 
    } 
    private bool _HasCounterColumn; 
    [Browsable(true)] 
    [Description("Indicates has Counter Column.")] 
    [Category("UniLib Tools")] 
    [DisplayName("Has Counter Column")] 
    public bool HasCounterColumn 
    { 
     get { return _HasCounterColumn; } 
     set { _HasCounterColumn = value; } 
    } 

} 

Он не может изменить значение _HasCounterColumn во время разработки.

ответ

1

Это не может работать, потому что дизайнер создает объект (вызывает конструктор), прежде чем он установит свойство HasCounterColumn.

Попробуйте вместо этого:

public class UniLibDataGridView : DataGridView 
{ 
    public UniLibDataGridView() 
    { 
    } 

    [Browsable(true)] 
    [Description("Indicates has Counter Column.")] 
    [Category("UniLib Tools")] 
    [DisplayName("Has Counter Column")] 
    [DefaultValue(false)] 
    public bool HasCounterColumn 
    { 
     get { return Columns.Contains("Counter"); } 
     set 
     { 
      if (value) 
       Columns.Add("Counter", "Counter"); 
      else if (Columns.Contains("Counter")) 
       Columns.Remove("Counter"); 
     } 
    } 
} 
+0

Спасибо. оно работает. –

+0

Поместите 'UniLibDataGridView' в форму и установите для свойства' Свой счетчик столбца' значение 'ИСТИНА' и постройте решение. Он сбрасывается на значение false, и если вы установите его на true, он добавит еще один столбец «Counter». Решение нуждается в некоторых исправлениях. –

Смежные вопросы