Condividi tramite


Risoluzione dei problemi relativi al controllo DataRepeater (Visual Studio)

Aggiornamento: Luglio 2008

In questo argomento vengono elencati i problemi che possono verificarsi durante l'utilizzo del controllo DataRepeater.

Mancata generazione di eventi di DataRepeater relativi a tastiera e mouse

Alcuni eventi del controllo DataRepeater, ad esempio quelli relativi a tastiera e mouse, non vengono generati. Tale comportamento è stato definito in fase di progettazione. Il controllo DataRepeater stesso è un contenitore per oggetti DataRepeaterItem e non è accessibile in fase di esecuzione. DataRepeaterItem non espone eventi in fase di progettazione. Facendo clic su un elemento o premendo un tasto quando l'elemento ha lo stato attivo, pertanto, non viene generato alcun evento.

Fa eccezione il caso in cui la proprietà Padding è impostata su un valore abbastanza grande da esporre i bordi del controllo DataRepeater. In tal caso, facendo clic sul margine esposto verranno generati eventi relativi al mouse.

Per risolvere il problema, aggiungere un controllo Panel alla sezione ItemTemplate del controllo DataRepeater, quindi aggiungere i controlli restanti a Panel. A questo punto è possibile aggiungere codice ai gestori eventi del controllo Panel per eventi relativi a tastiera e mouse.

Controllo DataRepeater parzialmente nascosto dietro BindingNavigator

Quando si aggiunge per la prima volta un controllo DataRepeater a un form e successivamente si aggiungono controlli con associazione a dati dalla finestra Origini dati, è possibile che il controllo BindingNavigator venga visualizzato sopra il controllo DataRepeater. Si tratta di un limite noto della finestra Origini dati ed è coerente con il comportamento di altri controlli, ad esempio il controllo DataGridView.

È possibile spostare DataRepeater più in basso rispetto al controllo BindingNavigator in fase di progettazione o aggiungere codice simile a quello riportato di seguito nel gestore eventi Load.

DataRepeater1.Top = ProductsBindingNavigator.Height
dataRepeater1.Top = productsBindingNavigator.Height;

Visualizzazione non corretta dei controlli in fase di esecuzione

In fase di esecuzione, è possibile che alcuni controlli in un controllo DataRepeater non vengano visualizzati come previsto. Il processo utilizzato per duplicare i controlli da ItemTemplate a DataRepeaterItem non è sempre in grado di determinare tutte le proprietà di tutti i controlli. Se, ad esempio, un controllo ListBox non associato viene aggiunto in fase di progettazione a un controllo DataRepeater e il relativo insieme Items viene popolato con un elenco di stringhe, in fase di esecuzione l'oggetto ListBox sarà vuoto. Nel processo di duplicazione, infatti, non è possibile tenere conto della proprietà Items.

Per correggere problemi di questo tipo è possibile ripristinare le proprietà mancanti nell'evento ItemCloned che si verifica al termine della duplicazione predefinita. Nell'esempio riportato di seguito viene illustrato come ripristinare l'insieme Items di un controllo ListBox nel gestore eventi ItemCloned.

Private Sub DataRepeater1_ItemCloned(ByVal sender As Object, ByVal e _
 As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs) _
 Handles DataRepeater1.ItemCloned
    Dim Source As ListBox = _
     CType(DataRepeater1.ItemTemplate.Controls.Item("ListBox1"), ListBox)
    Dim ListBox1 As ListBox = _
     CType(e.DataRepeaterItem.Controls.Item("ListBox1"), ListBox)
    For Each s As String In Source.Items
        ListBox1.Items.Add(s)
    Next
End Sub
private void dataRepeater1_ItemCloned(object sender, 
    Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
{
    ListBox Source = (ListBox)dataRepeater1.ItemTemplate.Controls["listBox1"];
    ListBox listBox1 = (ListBox)e.DataRepeaterItem.Controls["listBox1"];
    foreach (string s in Source.Items)
    {
        listBox1.Items.Add(s);
    }
}

Simbolo di selezione mancante nell'intestazione elemento

Quando si modifica la proprietà SelectionColor dell'intestazione elemento in un controllo DataRepeater, il simbolo di selezione può risultare nascosto a causa di alcune opzioni colore. Ciò può verificarsi anche in caso di modifica della proprietà ItemHeaderSize.

Non è possibile modificare il colore e le dimensioni del simbolo di selezione.

  • Se la proprietà SelectionColor è impostata su White, il simbolo di selezione non sarà visibile quando un elemento viene selezionato per la prima volta.

  • Se la proprietà SelectionColor è impostata su Black, il simbolo di selezione non sarà visibile quando viene selezionato un controllo, mentre il simbolo della matita non sarà visibile quando un controllo è in modalità di modifica.

  • Se la proprietà ItemHeaderSize è impostata su un valore minore di 11, i simboli degli indicatori non verranno visualizzati nell'intestazione elemento.

È possibile fornire un'intestazione elemento e un simbolo di selezione personalizzati utilizzando un controllo PictureBox e monitorando la proprietà IsCurrent di DataRepeaterItem nell'evento DrawItem del controllo DataRepeater. Per ulteriori informazioni, vedere la classe IsCurrent.

Vedere anche

Attività

Procedura: visualizzare i dati associati in un controllo DataRepeater (Visual Studio)

Procedura: visualizzare i dati non associati in un controllo DataRepeater (Visual Studio)

Procedura: modificare il layout di un controllo DataRepeater (Visual Studio)

Procedura: modificare l'aspetto di un controllo DataRepeater (Visual Studio)

Procedura: visualizzare le intestazioni degli elementi in un controllo DataRepeater (Visual Studio)

Procedura: disattivare l'aggiunta e l'eliminazione di elementi DataRepeater (Visual Studio)

Procedura: ricercare dati in un controllo DataRepeater (Visual Studio)

Procedura: creare un form Master-Details mediante due controlli DataRepeater (Visual Studio)

Concetti

Introduzione al controllo DataRepeater (Visual Studio)

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2008

Aggiunto argomento.

Modifica di funzionalità in SP1.