Visual Studio C#Winform Designer是否为控件成员创建了奇怪的代码?

时间:2012-10-03 18:45:33

标签: c# winforms visual-studio-2010 user-interface controls

感谢大家的时间。

我正在使用C#.Net 4.0和Visual Studio 2010 Professional。我在表单上有几个按钮,一个richtextbox和一个splitcontainer。没有很多代码,而且目前它并没有做太多。解决方案中有两个项目:称为MyProject和MySupportProject。表单位于MyProject项目中。

每当我尝试运行程序时,我都会遇到两个错误:

'MySupportProject.Properties.Resources' is inaccessible due to its protection level
'MySupportProject.Properties.Resources' does not contain a definition for String1'

所以我去看看设计师,由于某种原因,它一直在填写以下内容:

this.rtbStatus.Text = global::MySupportProject.Properties.Resources.String1;

我不知道为什么。我删除它或将其注释掉并继续生成该行。表单中的RTB(RichTextBox)没有与之关联的文本。

在解决方案属性中,MySupportProject被列为MyProject的依赖项,但在我的生活中我无法弄清楚它是如何尝试使用该特定的非可见字符串的特定RichTextBox。我稍微调查了MySupportProject中的资源,找到了定义:

    /// <summary>
    ///   Looks up a localized string similar to .
    /// </summary>
    internal static string String1 {
        get {
            return ResourceManager.GetString("String1", resourceCulture);
        }
    }

看起来上面的定义是由某些工具生成的,但我真的不确定它来自何处。有人在我之前参与了这个项目,所以他们可以把它放进去,但是我从头开始创建表单而我没有建立连接。有没有人有类似的问题?如果没有,还有什么我应该尝试阻止这种烦人的偶尔构建失败?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我并不完全知道这背后的原因,但你可以用这个替换这行:

this.rtbStatus.Text = "";

或:

this.rtbStatus.Text = null;

另外,请尝试删除您的字符串资源。如果你不能这样做:

  1. 检查资源文件中是否存有任何其他资源。
  2. 如果是,则将所有其他资源复制到新资源文件中并删除旧文件。
  3. 如果没有,则只需删除旧资源文件(.resx)并创建新资源文件。