Hallo zusammen,
vor einigen Wochen habe ich die Beta von VS 2010 mal installiert. Zuvor programmierte ich mit VS2005.
Nun fällt mir auf, dass ich beim compilieren für jedes Form eine Warnung bekomme.
Field 'Application1.Form1.components' is never assigned to, and will always have its default value null
Ich hatte mich schon einmal schlau gemacht und im Internet gefunden, dass man follgenden Codeausschnitt im Degsiner hinzufügen muss:
this.components = new System.ComponentModel.Container();
Dies klappt dann auch wunderbar, bis zu dem Punkt wo man Veränderungen an dem Form vornimmt.
Ich finde diese Meldung einfach nervend 😉
Weiß jemand wie ich den Fehler behebe?
Viele Dank im voraus
Hm, ich arbeite im Unternehmen auch mit Visual Studio 2005 und hab damit keine Probleme. // Huch sehe grad, Visual Studio 2010. - Naja aber an sich dürfte es nicht viel anders sein.
Zum vergleich geb ich mal an, was erstellt wird, wenn ich ein neues Form erstelle:
TestForm.cs
public partial class TestForm : Form
{
public TestForm()
{
InitializeComponent();
}
}
TestForm.Designer.cs
partial class TestForm
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "TestForm";
}
#endregion
}
Erstellt wird das ganze automatisch und Änderungen an der Form sind ebenfalls Problemlos machbar. - Gibt es denn abweichungen zu dem, was du erhältst wenn du ein neues Form anlegst?
Eventuell kannst du ja auch mal schaun ob die Templates noch in Ordnung sind. - Diese dürftest du irgendwo im Programmpfad finden.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Bei mir sieht es so aus:
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
So wenn ich nun:
this.components = new System.ComponentModel.Container();
einfügen und was änder an der Form ist dieser Teil wieder weg 😕
Hi,
versuch mal Components im Code manuell auf null zu setzen:
private System.ComponentModel.IContainer components = null;
Das sollte der Designer nicht überschreiben, und die Warnung sollte auch weg sein.
Mfg,
Daniel
Perfekt, nach ersten Test's scheint er es echt zu übernehmen. Auch wenn ich immer noch nicht verstehe warum er rummeckert.
Vielen Danke 😃
Das steht doch in der Fehlermeldung warum er meckert 😉
Field 'Application1.Form1.components' is never assigned to, and will always have its default value null
private System.ComponentModel.IContainer components;
In diesem Fall weist du der components-Variable, wie der Fehler sagt, nie einen Wert zu, und er ist immer null.
Sobald du ihm nun null manuell zuweist, kommt die Meldung nicht mehr, da du ihm ja etwas zuweist - auch wenn es nur null ist, aber der compiler weiß nun, dass das absichtlich auf null gesetzt wird, und nicht vergessen wurde.
Mfg,
Daniel