Problembehandlung beim DataRepeater-Steuerelement (Visual Studio)
In diesem Thema sind allgemeine Probleme aufgelistet, die bei der Arbeit mit dem DataRepeater-Steuerelement auftreten können.
DataRepeater-Tastaturereignisse und -Mausereignisse werden nicht ausgelöst
Einige DataRepeater-Steuerelementereignisse, z. B. Tastatur- und Mausereignisse, werden nicht ausgelöst. Dieser Fehler ist entwurfsbedingt. Das DataRepeater-Steuerelement selbst ist ein Container für DataRepeaterItem-Objekte und es kann zur Laufzeit nicht darauf zugegriffen werden. DataRepeaterItem zeigt zur Entwurfszeit keine Ereignisse an. Daher wird kein Ereignis ausgelöst, wenn Sie auf ein Element klicken oder eine Taste drücken, während auf dem Element der Fokus liegt.
Eine Ausnahme hierzu besteht, wenn die Padding-Eigenschaft auf einen hohen Wert festgelegt ist, sodass die Ränder des DataRepeater-Steuerelements verfügbar sind. Wenn Sie in diesem Fall auf den verfügbaren Rand klicken, wird ein Mausereignis ausgelöst.
Sie beheben dieses Problem, indem Sie ein Panel-Steuerelement dem ItemTemplate-Bereich des DataRepeater-Steuerelements und anschließend den Rest des Steuerelement zu Panel hinzufügen. Danach können Sie Code den Ereignishandlern des Panel-Steuerelements für Tastatur- und Mausereignisse hinzufügen.
Der DataRepeater wird teilweise durch den BindingNavigator verdeckt
Wenn Sie zum ersten Mal ein DataRepeater-Steuerelement einem Formular hinzufügen und dann datengebundene Steuerelemente aus dem Fenster Datenquellen einfügen, wird das BindingNavigator-Steuerelement möglicherweise über dem DataRepeater-Steuerelement angezeigt. Dies ist eine Einschränkung des Fensters Datenquellen und entspricht dem Verhalten anderer Steuerelemente, z. B. DataGridView.
Sie können entweder zur Entwurfszeit das DataRepeater-Steuerelement unter das BindingNavigator-Steuerelement verschieben, oder Sie fügen im Load-Ereignishandler ähnlichen Code wie den Folgenden hinzu.
DataRepeater1.Top = ProductsBindingNavigator.Height
dataRepeater1.Top = productsBindingNavigator.Height;
Steuerelemente werden zur Laufzeit nicht ordnungsgemäß angezeigt
Einige Steuerelemente in einem DataRepeater-Steuerelement werden zur Laufzeit möglicherweise nicht wie erwartet angezeigt. Beim Klonen von Steuerelementen aus ItemTemplate in DataRepeaterItem können nicht immer alle Eigenschaften der einzelnen Steuerelemente ermittelt werden. Wenn Sie beispielsweise zur Entwurfszeit ein ungebundenes ListBox-Steuerelement einem DataRepeater-Steuerelement hinzufügen und die zugehörige Items-Auflistung mit einer Liste von Zeichenfolgen füllen, ist ListBox zur Laufzeit leer. Dies ist darauf zurückzuführen, dass der Klonvorgang die Items-Eigenschaft nicht berücksichtigen kann.
Sie beheben Probleme wie dieses, indem Sie die fehlenden Eigenschaften im ItemCloned-Ereignis wiederherstellen, das nach dem standardmäßigen Klonvorgang ausgelöst wird. Das folgende Beispiel veranschaulicht, wie Sie die Items-Auflistung eines ListBox-Steuerelements im ItemCloned-Ereignishandler reparieren.
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);
}
}
Das Auswahlsymbol auf dem Elementheader fehlt
Wenn Sie die SelectionColor-Eigenschaft des Elementheaders in ein DataRepeater-Steuerelement ändern, wird das Auswahlsymbol je nach Farbauswahl möglicherweise ausgeblendet. Auch eine Änderung der ItemHeaderSize-Eigenschaft kann zur Folge haben, dass das Auswahlsymbol nicht mehr sichtbar ist.
Die Farbe und die Größe des Auswahlsymbols können nicht geändert werden.
Wenn Sie SelectionColor auf White festlegen, wird das Auswahlsymbol bei der ersten Auswahl eines Elements nicht angezeigt.
Wenn Sie SelectionColor auf Black festlegen, ist das Auswahlsymbol bei Auswahl eines Steuerelements nicht sichtbar. Wenn sich ein Steuerelement im Bearbeitungsmodus befindet, ist das Stiftsymbol ebenfalls nicht zu sehen.
Wenn die ItemHeaderSize-Eigenschaft auf einen Wert unter 11 festgelegt ist, werden die Indikatorsymbole im Elementheader nicht angezeigt.
Sie können auch einen eigenen Elementheader und ein eigenes Auswahlsymbol angeben, indem Sie ein PictureBox-Steuerelement verwenden und die IsCurrent-Eigenschaft von DataRepeaterItem im DrawItem-Ereignis des DataRepeater-Steuerelements überwachen. Weitere Informationen finden Sie unter IsCurrent.
Siehe auch
Aufgaben
Gewusst wie: Anzeigen von gebundenen Daten in einem DataRepeater-Steuerelement (Visual Studio)
Gewusst wie: Anzeigen von nicht gebundenen Daten in einem DataRepeater-Steuerelement (Visual Studio)
Gewusst wie: Ändern des Layouts eines DataRepeater-Steuerelements (Visual Studio)
Gewusst wie: Ändern der Darstellung eines DataRepeater-Steuerelements (Visual Studio)
Gewusst wie: Anzeigen von Elementheadern in einem DataRepeater-Steuerelement (Visual Studio)
Gewusst wie: Deaktivieren des Hinzufügens und Löschens von DataRepeater-Elementen (Visual Studio)
Gewusst wie: Suchen von Daten in einem DataRepeater-Steuerelement (Visual Studio)
Konzepte
Einführung in das DataRepeater-Steuerelement (Visual Studio)