变量'variable_name'要么未声明,要么从未分配过

Kit*_*inz 37 .net c# visual-studio-2010 windows-forms-designer winforms

我有一个与标题错误有关的问题.我正在使用c#和Visual Studio 2010.

我有一个声明为"公共类FormularioGeneral:Form"的表单,它是我的应用程序中其余表单的基础.当我尝试访问Designer视图时,我会多次出现此错误,如图所示:

错误样本 所有错误都引用InitializeComponent方法中的行,其中值被赋予像这样的属性:

[...]            
this.PanelMargenIzquierdoCapaBase.BackColor = m_ColorCapaBase;
[...]
Run Code Online (Sandbox Code Playgroud)

但是所有变量都在与只读属性相同的类中声明,并且所有变量都在构造函数中调用的方法内分配.

财产声明:

    protected Color m_VariableName;
    public Color VariableName
    {
        get { return m_VariableName; }
        set { }
    }
Run Code Online (Sandbox Code Playgroud)

构造函数代码:

    public FormularioGeneral()
    {
        ConfigurarUI();
        AccionesConstructor();
        InitializeComponent();
        PostInicializacionComponentes();
        EstablecerIcono();
        InicializarLocalizacionFormulario();
    }
Run Code Online (Sandbox Code Playgroud)

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)));
        [...]
}
Run Code Online (Sandbox Code Playgroud)

所以,据我所知,所有给出错误的变量都被正确声明,并在调用InitilizeComponent函数之前赋值.

我坚持这一点,不知道如何解决问题.希望你们中的一些人可以帮我解决这个问题.

Luc*_*cas 36

所以,我过去遇到过同样的问题,为了解决这个问题,我做了以下几点:

  • 解决方案→清洁溶液;
  • 构建→重建解决方案;
  • 关闭Visual Studio,重新打开.

非常感谢Marshall Belew!

  • 如果有人在这里找到他们的方式,问题可能来自违规控件的构造函数被声明除了`public`以外的任何东西. (2认同)

Swo*_*gan 10

我遇到了这个错误,因为我的项目只是x64.显然,作为32位应用程序的Visual Studio无法在设计器中加载任何编译为64位的表单或控件.它完全有道理,但错误没有给出任何迹象表明问题.

答案Visual Studio设计在64不起作用.

解决方法是在设计时将项目更改为任何CPU,然后在构建时返回.

  • 太糟糕了,即使在 2017 年的 Visual Studio 中,他们仍然没有说出真正的原因......在网络上 2 小时,在尝试手动更改 GUI 之后......直到我来到这里...... (2认同)

Fis*_*aen 8

可能由于您的构造函数代码而发生错误.放置InitializeComponent();在这样的构造函数的开头:

public FormularioGeneral()     
{         
    InitializeComponent();
    ConfigurarUI();         
    AccionesConstructor();
    PostInicializacionComponentes();         
    EstablecerIcono();         
    InicializarLocalizacionFormulario();     
} 
Run Code Online (Sandbox Code Playgroud)

说明:

变量在该方法中初始化.


Uwe*_*eim 8

在我的情况下,我有一个较旧的Windows窗体项目,其InitializeComponents()开始如下:

private void InitializeComponent()
{
    var componentResourceManager = new ComponentResourceManager(typeof(MyForm));
    ...
Run Code Online (Sandbox Code Playgroud)

这在访问componentResourceManager内部时导致稍后出现错误消息InitializeComponent():

变量'componentResourceManager'未声明或从未分配过.

当与新创建的表单进行比较时,我发现它与我的非工作表单类似,除了一件事:

变量没有命名componentResourceManager,只是简单resources.

在对我的变量进行重命名以获得名称后resources,一切都能成功运行.

Visual Studio 2017中的Windows窗体设计器确实正确打开了窗体.

  • 谢谢,为我工作。您能解释为什么它如此工作吗? (2认同)