c# - tutorial - windows forms application visual studio 2017




La variabile 'variable_name' è non dichiarata o non è mai stata assegnata (8)

Forse l'errore si verifica a causa del tuo codice costruttore. Inserire InitializeComponent(); all'inizio del costruttore in questo modo:

public FormularioGeneral()     
{         
    InitializeComponent();
    ConfigurarUI();         
    AccionesConstructor();
    PostInicializacionComponentes();         
    EstablecerIcono();         
    InicializarLocalizacionFormulario();     
} 

Spiegazione:

Le variabili sono inizializzate in quel metodo.

Ho una domanda relativa all'errore sul titolo. Sto lavorando con c # e Visual Studio 2010.

Ho un modulo dichiarato come "public class FormularioGeneral: Form", che è la base per il resto dei moduli nella mia applicazione. Quando provo ad accedere a Designer View ottengo questo errore più volte, come puoi vedere nell'immagine:

Tutti gli errori fanno riferimento a righe all'interno del metodo InitializeComponent, in cui il valore è assegnato a una proprietà come questa:

[...]            
this.PanelMargenIzquierdoCapaBase.BackColor = m_ColorCapaBase;
[...]

Ma tutte le variabili sono dichiarate nella stessa classe delle proprietà di sola lettura e tutte sono assegnate all'interno di un metodo chiamato nel costruttore.

Dichiarazione di proprietà:

    protected Color m_VariableName;
    public Color VariableName
    {
        get { return m_VariableName; }
        set { }
    }

Codice costruttore:

    public FormularioGeneral()
    {
        ConfigurarUI();
        AccionesConstructor();
        InitializeComponent();
        PostInicializacionComponentes();
        EstablecerIcono();
        InicializarLocalizacionFormulario();
    }

Metodo ConfigurarUI:

public virtual void ConfigurarUI()
{
        [...]

        m_AltoBordeSuperiorCapaBase = 30;
        m_AltoBordeInferiorCapaBase = 7;
        m_AnchoBordesLateralesCapaBase = 7;

        m_ColorCapaBase = Color.FromArgb(50, 100, 150);
        m_ColorTextoCapaBase = Color.White;
        m_ColorTextoBotonAplicacion = Color.Black;

        m_FuenteTextoIzquierdoCapaBase = new System.Drawing.Font("Verdana", 11.0F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        m_FuenteTextoCentroCapaBase = new System.Drawing.Font("Verdana", 14.0F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        [...]
}

Quindi, per quanto ne so, tutte le variabili che stanno dando gli errori sono dichiarate correttamente e hanno un valore assegnato prima che venga chiamata la funzione InitilizeComponent.

Sono bloccato a questo punto e non so cosa fare per risolvere il problema. Spero che alcuni di voi possano aiutarmi con questo problema.


Ho avuto lo stesso problema e la pulizia e la ricostruzione non hanno funzionato per me.

Nel mio caso il problema è stato causato dal progettista di Visual Studio che caricava DLL referenziate dal GAC invece di caricarle dalla directory <HintPath> specificata nel file .csproj. Le DLL nel GAC non hanno la stessa versione delle DLL memorizzate localmente.

Quando ho aggiornato le DLL nel GAC per avere la stessa versione, tutto ha funzionato di nuovo OK.


I controlli utente sono stati causati da problemi e dopo aver provato tutti i suggerimenti, ( soluzione di messa a fuoco quindi Alt + Invio ), la modifica della piattaforma della soluzione da x64 a qualsiasi CPU ha risolto il problema.


Mi sono imbattuto in questo errore perché il mio progetto è solo x64. Apparentemente Visual Studio, essendo un'applicazione a 32 bit, non può caricare alcun modulo o controllo compilato a 64 bit nel designer. Ha perfettamente senso, ma l'errore non ti dà alcuna indicazione che è il problema.

Vedere la risposta a Visual Studio Designer in x64 non funziona .

La soluzione alternativa è di cambiare il progetto in qualsiasi CPU durante la progettazione, quindi di nuovo durante la creazione.


Nel mio caso, ho avuto un vecchio progetto Windows Form in cui InitializeComponents() avviato in questo modo:

private void InitializeComponent()
{
    var componentResourceManager = new ComponentResourceManager(typeof(MyForm));
    ...

Ciò ha provocato in seguito un messaggio di errore durante l'accesso a componentResourceManager all'interno di InitializeComponent() :

La variabile 'componentResourceManager' è non dichiarata o non è mai stata assegnata.

Quando ho confrontato con un modulo appena creato, ho visto che era simile al mio modulo non funzionante, tranne che per una cosa:

La variabile non è stata chiamata componentResourceManager ma semplicemente resources .

Soluzione

Dopo aver fatto un rinominare sulla mia variabile per avere anche le resources del nome, tutto funziona correttamente.

La Progettazione Windows Form in Visual Studio 2017 ha aperto correttamente il modulo.


Non inserire niente di diverso da InitializeComponent(); nel costruttore. Puoi inserire il codice da lì in eventi come Load() .


Quindi, ho avuto lo stesso problema in passato, per la correzione ho fatto quanto segue:

  • Soluzione → Soluzione pulita;
  • Build → Ricrea soluzione;
  • Chiudi Visual Studio, riapri.

Grazie mille a Marshall Belew!


Riguardo alle variabili, puoi semplicemente inizializzarle nella dichiarazione? Penso che sarebbe sufficiente, anche se cambi il valore più tardi. Da quello che sto vedendo, il compilatore non è in grado di verificare se li hai inizializzati o meno perché non è direttamente sul codice costruttore, ma viene eseguito su un metodo virtuale che valuterà solo in fase di runtime.

Quindi, invece di:

protected Color m_VariableName;
public Color VariableName
{
    get { return m_VariableName; }
    set { }
}

Fare:

protected Color m_VariableName = Color.White; // Or null
public Color VariableName
{
    get { return m_VariableName; }
    set { }
}

E un commento: dovresti evitare le chiamate virtuali nel costruttore, il che può portare a errori oscuri nella tua applicazione. Controlla here .





windows-forms-designer