Ciao
Potresti implementare il controllo derivandolo da una ListView. L'unica cosa che ti resta da fare è eseguire l'override del metodo OnParentChanged, e da lì (se il parent non è null) ciclare su tutti i suoi figli aggiungendoli alla ListView:
public class ParentChildren : ListView
{
public ParentChildren()
{
InitializeComponent();
}
protected override void OnParentChanged(EventArgs e)
{
base.OnParentChanged(e);
if(this.DesignMode)
return;
// Elimina gli elementi correnti
this.Items.Clear();
// Ottiene il controllo padre di questo controllo
Control parent = this.Parent;
// Se non ha padre, finisce qui
if (parent == null)
return;
// Cicla su tutti i figli del padre...
foreach (Control c in parent.Controls)
{
//... aggiungendoli ai propri elementi
this.Items.Add(c.Name);
}
}
}
Se vuoi puoi anche migliorarlo in modo da aggiornarsi automaticamente quando vengono aggiunti\rimossi controlli, ma inizia a vedere se così può andar bene...
Luca
P.S. Scusa Jeremy, ho postato di notare che avevi già risposto tu...