it-swarm.com.de

Was ist der Unterschied zwischen Benutzersteuerung, benutzerdefiniertem Steuerelement und Komponente?

Dies sind drei verschiedene Dinge, die Sie zu einem Projekt hinzufügen können, und ich bin mir nicht ganz sicher, ob ich den Unterschied verstehe. Sie scheinen alle in der Komponenten-Toolbox zu erscheinen, wenn Sie mit einem Form arbeiten. Welche allgemeinen Verwendungsszenarien gibt es für die einzelnen? Was ist der Unterschied?

78
Svish

Der Hauptunterschied zwischen Benutzersteuerung, benutzerdefiniertem Steuerelement und Komponente besteht darin, dass sie von verschiedenen Ebenen in der Vererbungsstruktur erben:

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component

Kurz gesagt, Sie erhalten eine andere Menge an vorverdrahteten Funktionen mit den verschiedenen Optionen.

Wann würden Sie die verschiedenen Optionen verwenden? (das sind Gedanken und Meinungen, keine Wahrheiten)

  • Erstellen Sie eine Komponente, wenn Sie Funktionalität ohne Benutzeroberfläche bereitstellen möchten (z. B. Timer-Komponenten, Datenquellen, ...)
  • Erstellen Sie ein benutzerdefiniertes Steuerelement, wenn Sie eine Komponente mit vollem visuellem Steuerelement erstellen möchten, und Sie möchten kein Gepäck mit unnötiger Funktionalität. Typische Fälle sind einfache Bedienelemente mit eingeschränkter Funktionalität (z. B. eine Schaltfläche).
  • Erstellen Sie ein Benutzersteuerelement, wenn Sie vorhandene Steuerelemente kombinieren in wiederverwendbaren Bausteinen (z. B. zwei Listen mit Schaltflächen, mit denen Sie Elemente zwischen den Listen verschieben können).
147
Fredrik Mörk

Dies ist ein Unterschied zwischen einem CustomControl und einem UserControl:

Zollkontrolle

Eine lose gekoppelte Steuerung mit Code und Benutzeroberfläche

Kommt von der Kontrolle

Definiert die Benutzeroberfläche in einem ResourceDictionary

UI ist skinbar

Hat dynamisches Layout

Die Benutzeroberfläche kann in verschiedenen Projekten geändert werden

Hat volle Toolbox-Unterstützung

Definiert ein einzelnes Steuerelement

Flexibler

==============

Nutzerkontrolle

Eine eng gekoppelte Steuerung mit Code und Benutzeroberfläche

Wird von UserControl abgeleitet

Definiert die Benutzeroberfläche als normale XAML

Kinderkontrollen sind hautfreundlich

Hat statisches Layout

Die Benutzeroberfläche ist repariert und kann in verschiedenen Projekten nicht unterschiedlich aussehen

Kann nicht zur Toolbox hinzugefügt werden

Definiert eine Reihe von Steuerelementen

Nicht sehr flexibel wie ein benutzerdefiniertes Steuerelement

4
Menard Laval

Zusätzlich zu Fredriks Aussagen würden im Allgemeinen Komponenten und benutzerdefinierte Steuerelemente verwendet, wenn Sie diese projektübergreifend wiederverwenden möchten. Verwenden Sie Benutzersteuerelemente, wenn Sie sie nur in einem Projekt verwenden würden.

2
Chad Yeates

Ich glaube, die letzte Aussage ist meiner Meinung nach nicht richtig. Ich erstelle Benutzersteuerelemente aus vielen verschiedenen Gründen.

Der Hauptgrund ist, dass ich, wenn ich so will, eine Schnittstelle von mehreren Steuerelementen entwerfe, die zusammen gruppiert sind.

Ich erstelle eine Klassenbibliothek und füge ihr dann Benutzersteuerelemente hinzu. Jetzt, wenn ich irgendeinen Teil der Logik ändern muss, die dahintersteckt, wie die Benutzersteuerung funktioniert, kann ich sehr leicht. Auch diese Klassenbibliothek kann mehrfach verwendet werden.

Außerdem kann ich innerhalb derselben Bibliothek mehrere Klassen haben, die gemeinsam genutzt und für alle meine Benutzersteuerelemente verwendet werden können.

Dies ist der Hauptgrund, warum ich Benutzersteuerelemente verwende. Und wenn Sie Änderungen an Ihrem Benutzersteuerelement oder Ihrer Klassenbibliothek vornehmen. Sobald Sie den Job bauen. Die DLL wird dynamisch im Ordner bin aktualisiert.

Wenn ich dies also in einem anderen Projekt referenziere, werden diese Änderungen auch in einem neuen Projekt angezeigt.

Außerdem werden nicht dieselben Malroutinen wie für das Formular und für alle in das Formular geladenen Elemente verwendet.

Benutzersteuerelemente ermöglichen es uns, sehr modular zu sein. Außerdem kann es mehrere Benutzersteuerelemente geben, die die Grundklassen der Klassenbibliothek gemeinsam nutzen. Ein Benutzersteuerelement ist also nicht für ein Projekt vorgesehen. Diesbezüglich bestehen keine Einschränkungen. Jeff

0
Robopro