Announcement

Collapse
No announcement yet.

Fehler "this.components immer null" - Zuweisung fehlt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler "this.components immer null" - Zuweisung fehlt

    Hallo,
    ich arbeite jetzt mit Delphi-C# und leite Formulare von einem Basisformular ab:
    public class WinForm1: FormularVorlage.BaseForm { ... }
    Beim Kompilieren erscheint wiederholt die <b>Fehlermeldung:</b>
    <i>[C# Warnung] WinForm1.cs(24): Dem Feld 'WinForm1.components' wird nie etwas zugewiesen, und es hat immer seinen Standardwert von null</i>
    Wenn ich den vom Designer erzeugten Code kontrolliere, scheint es, dass die folgende Zeile
    this.components = new System.ComponentModel.Container();
    am Anfang von InitializeComponent() immer dann verschwindet, wenn ich vom Designer zur Code-Ansicht wechsle. Was ist los?
    ** Auf welchem Weg wird das Feld components normalerweise erzeugt und mit Inhalt versehen?
    ** Wieso fehlen diese Schritte?
    ** Kann/Muss ich ersatzweise auf base.components verweisen?
    Danke für Hinweise!
    Jürgen

  • #2
    Hallo,
    die Instanz von <i>System.ComponentModel.Container</i> wird nur bei bestimmten (nichtvisuellen) Controls benötigt, so dass der Windows Forms-Designer die Instanzierung über <i>new</i> nur dann in <i>InitializeComponent</i> aufnimmt, wenn der Container für die spätere Freigabe der Controlinstanz benötigt wird

    Comment


    • #3
      Danke,
      ah ja - so ist das verständlich. Im Basisformular habe ich protected einen <i>Timer, ToolTip, ImageList und C1CommandHolder</i> (über C1CommandDock von Component One) eingebunden. Weil das abgeleitete Formular diese Komponenten einbindet, legt es offensichtlich auch Components zusätzlich an und hat damit beim Initialisieren und bei Dispose() gewisse Zuordnungsprobleme.
      Darf ich also in diesem speziellen Fall die <b>Compiler-Warnung ignorieren?</b>
      Jürge

      Comment


      • #4
        Hallo,
        ein Timer benötigt einen Container, aber wenn das Eltern-Formular diesen bereits initialisiert, kann die Warnung in der Tat ignoriert werden

        Comment

        Working...
        X