Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VisualStudio2010 Winforms总是忘记资源_C#_.net_Winforms_Icons_Embedded Resource - Fatal编程技术网

C# VisualStudio2010 Winforms总是忘记资源

C# VisualStudio2010 Winforms总是忘记资源,c#,.net,winforms,icons,embedded-resource,C#,.net,Winforms,Icons,Embedded Resource,由于某些原因,在我当前的项目中,我通过项目属性创建了资源文件,添加了大量现有图像。然后转到将这些图像添加到菜单项,保存它。在这一点上,一切看起来都很好,图像都映射正确 但是,一旦我关闭该表单的设计器,然后打开它,我会看到一个错误对话框,上面说: 类型“My.Project.Properties.Resources”没有名为“icon\u plus”的属性。 令人恼火的是,如果您按照代码进行操作,就不会出现错误,它可以很好地编译: this.newToolStripMenuItem.Image =

由于某些原因,在我当前的项目中,我通过项目属性创建了资源文件,添加了大量现有图像。然后转到将这些图像添加到菜单项,保存它。在这一点上,一切看起来都很好,图像都映射正确

但是,一旦我关闭该表单的设计器,然后打开它,我会看到一个错误对话框,上面说:

类型“My.Project.Properties.Resources”没有名为“icon\u plus”的属性。

令人恼火的是,如果您按照代码进行操作,就不会出现错误,它可以很好地编译:

this.newToolStripMenuItem.Image = global::My.Project.Properties.Resources.icon_plus;

我尝试删除所有资源并从项目中删除资源文件,完全关闭IDE,然后重新加载它。我已经移动了文件的位置,但我只是没有主意,它真的开始与大约10个表单和控件格格不入,每个表单和控件都会给我这个错误。它们会从UI中删除图标。

查看项目引用,并删除对self的引用。

这很可能与名称空间冲突有关

仔细检查项目中的所有名称空间,VS喜欢使用“ProjectName.FolderName”。如果它自动将图标文件夹中的一个类/资源文件更改为ProjectName.Icon,则可能与类/结构名称冲突


有趣的是,应用程序生成了..

我以前遇到过这个错误。当我添加了一个资源,然后将其拿走或销毁时,它就出现了。我发现解决这个问题的唯一方法是打开.csproj文件,查找它给出错误的.ico并将其删除。你在找什么

<ItemGroup>
    <None Include="Resources\SomeResource.ico" />
</ItemGroup>

在此之后,保存文件。打开解决方案并重新添加。希望这对你有用。但是,请注意,这不是理想的解决方案

编辑:

嗯。所以这并没有解决你的问题。进入解决方案文件夹并导航到“属性”文件夹。在里面,您将看到一个名为resources的文件。打开它并尝试查找有问题的文件名

<data name="YourNamedIco" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\SomeResource.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, 
         Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
</data>

..\Resources\SomeResource.ico;System.Drawing.Bitmap,System.Drawing,版本=4.0.0.0,
区域性=中性,PublicKeyToken=b03f5f7f11d50a3a
如果确实找到了,请删除此,然后保存


我希望这能有所帮助。

这是一个非常烦人的问题,在我遇到另一个导致我改变事情的问题之前,我从未想过这一点


这似乎取决于应用程序使用.net 4的客户端配置文件,而不仅仅是默认的.net 4运行时。一旦我改变了这一点,这个问题就停止了,我最近出现的另一个缺少名称空间的问题也消失了。

我遇到了同样的问题。VS不会加载任何表单对象。我尝试了所有其他方法,但没有结果

之前,我将所有私有全局变量都更改为公共属性

public Textbox exampleTextBox { get; set; }
我这样做有多种原因,但designer视图不喜欢它。我相信它一定有一些解析问题

对象必须是全局变量而不是属性

public Textbox exampleTextBox;

这修正了我的设计师观点。

以下是对我有效的方法。(尝试了所有张贴的内容,但没有任何乐趣。)

当我第一次启动项目时,在项目属性中指定的默认
命名空间
MyProject
。(所以我的大多数类看起来像
名称空间
MyProject{public class foo{}}

后来,我将类的名称空间从
MyProject
更改为
CompanyName.MyProject
这也是问题发生的时候

在我的例子中,我必须返回
项目属性
,并更改实际条目 在
defaultnamespace
CompanyName.MyProject

砰,没问题了。

我找到了另一种方法

在私有方法中移动初始化表单代码,如下所示

private void FormInitialize(){/*Your code here*/}
在表单构造器中,像这样使用它

public Form1()
    {
        InitializeComponent();
        FormInitialize();
    }
    private void ChangeCultureToFrench_Click(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");
        this.Controls.Clear();
        this.InitializeComponent();
        FormInitialize();
    }
从按钮、菜单项或其他类似的调用方法

public Form1()
    {
        InitializeComponent();
        FormInitialize();
    }
    private void ChangeCultureToFrench_Click(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");
        this.Controls.Clear();
        this.InitializeComponent();
        FormInitialize();
    }

我希望这能有所帮助;-)

我和你有同样的问题,尽管我使用的“解决方案”甚至可能不会被称为“解决方案”。我知道我添加了一些安装项目,并删除了它,同时还修改了一些图像的构建操作

我使用的解决方案?删除当前项目,并恢复到最近制作的备份,该备份没有问题。当然,这只有在备份项目解决方案时才起作用


如果您确实备份了您的项目解决方案,请在万不得已的情况下尝试此方法。

我尝试了所有其他答案,但没有一个有效

最后似乎对我有用的是通过右键单击您的项目,然后“重新加载项目”来执行“卸载项目”。在检查我的
.cs[Design]
是否工作之前,我还通过右键单击解决方案资源管理器中的项目,然后单击“重命名”,将我的项目重命名为其他项目


不要问我为什么这样做…

打开Resources.resx文件,添加新映像,然后构建解决方案/项目。错误将消失。

我认为是这样,但当我删除了所有内容(包含资源的文件夹、实际资源文件以及对它的引用)然后重新创建它时,我从项目外部重新添加了它们,并让它将它们放在它想放的任何地方。仍然是同一个问题,解决方案中没有资源名称空间,除了它为所述资源创建的名称空间之外。+1如果可以,尝试将其剥离(到一个基本项目中),直到问题清晰可见。我删除了所有这些类型的引用,同时删除了所有其他内容,这没有任何区别,一旦我重新打开项目并通过VS existing file对话框将它们添加回,它的作用就是相同的…我再次尝试手动修补此文件,手动删除resources.resx或其调用的任何内容,然后从头开始创建并逐个添加它们,以查看它们是否正常工作