2014-02-10 5 views
0

Я пытаюсь создать вложенный элемент управления DataGridView, где будут открыты два уровня вложенности. Он будет похож на изображение на этой странице: http://www.codeproject.com/Articles/12657/GridView-inline-Master-Detail-record-display. Разница будет в том, что каждая подсети всегда будет открытой, и нет необходимости иметь возможность открывать/закрывать каждое вложение. Этот элемент управления будет использоваться только для отображения данных, поэтому нет необходимости изменять данные непосредственно из этого элемента управления (даже если пользователь не будет изменять данные напрямую, он все равно может быть изменен).Вложенный элемент управления DataGridView

Если это невозможно сделать с помощью DataGridView, есть ли какой-либо другой элемент управления, который бы это разрешил.

Если никто не знает другого способа сделать это. Я могу, но им было бы утомительно реализовать. Один из способов - добавить несколько элементов управления DataGridView в последовательности (2N DataGridControls для N категорий). Другой будет добавлять все это вручную со статическим контролем.

+0

Я настоятельно рекомендую WPF для этого вместо winforms. –

+0

Вы хотите сделать datagridview как неизлечимый, или вы хотите, чтобы все datagridview в форме были непересекающимися? – Jade

+0

Сколько времени потребуется, чтобы узнать, как использовать WPF, а затем реализовать это. (Я не знаю об этом.) – user3291087

ответ

0

Я не знаю, даст ли это ответ, но это может привести к некоторой двери.

//button to call function that looks for DatagridView control 
private void button2_Click(object sender, EventArgs e) 
{ 
    scanDG(this); 
} 

private void scanDG(Control parent) 
{ 
    foreach (Control ctrl in parent.Controls) 
    { 
     if (ctrl.GetType().Name == "DataGridView") 
     {//If current Control is Datagridview then set Readonly to true 
      ((DataGridView)ctrl).ReadOnly = true; 
     } 

     //If a control can contain control scan it and look for Datagridview control 
     if (ctrl.HasChildren) scanDG(ctrl); 
    } 
} 
Смежные вопросы