2008-10-12 4 views
5

Ich habe mehrere Formulare in einer .net Windows App, die einen gemeinsamen Satz von Textfeldern und anderen Benutzereingabesteuerelementen haben, jedes Formular hat das gleiche Aussehen und Verhalten, aber jedes Formular muss in verschiedene Datenbanktabellen geladen und gespeichert werden.Visuelle Vererbung oder ein Benutzersteuerelement?

Wäre es besser, die Steuerelemente in einem Basisformular zu platzieren und davon zu erben oder ein Benutzersteuerelement zu erstellen, um jedes Formular zu löschen?

Antwort

1

Normalerweise bevorzuge ich UserControls, da sie flexibler sind - Sie können sie im Kontext eines Formulars oder in einem anderen visuellen Kontext verwenden, um Daten anzuzeigen oder zu ändern. Ich hatte mehrere Fälle, in denen ich mein UI-Design von einem separaten Dialog ändern musste, um etwas zu einem Inline-Steuerelement innerhalb des Hauptformulars oder etwas Ähnlichem zu bearbeiten.

Ansonsten würde ich sagen, es ist eine Frage des Geschmacks.

0

Kommt drauf an. Das zusammengesetzte Modell (mit Benutzersteuerung) ist sauberer, aber das Steuerelement kann das aufrufende Formular nicht kennen, daher müssen Sie die Logik als Ereignisse übergeben. Das kann manchmal zu doppelter Logik führen.

Mit der Vererbung können Sie gemeinsamen Code in der Basisklasse mit einer Überschreibung in der Unterklassenform implementieren und flexibles Zusammenspiel implementieren. Dies erfordert jedoch, dass alle Implementierer der Unterklasse den Quellcode der Basisklasse kennen, der chaotisch werden kann.

0

Ich verwende beide Methoden, je nach Situation. Wenn Sie ein funktionelles Stück LOGIC haben, das Sie einfach in ein Formular unmodified fallen lassen wollen, dann denke ich, dass UserControls angemessen sind. Wenn Sie jedoch nur versuchen, eine gemeinsame Benutzeroberfläche für mehrere Formulare zu duplizieren und zu erweitern, ist die visuelle Vererbung wahrscheinlich die bessere Option.

0

Abhängig von der Logik hinter den einfacheren Bedienelementen, die mit Ereignissen verdrahtet sind. Wenn es Aufgaben gemeinsam gibt, können Sie eine Basisklasse Server Control verwenden.