Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
.net Visual Studio一直在设计器文件中插入默认属性值_.net_Visual Studio - Fatal编程技术网

.net Visual Studio一直在设计器文件中插入默认属性值

.net Visual Studio一直在设计器文件中插入默认属性值,.net,visual-studio,.net,Visual Studio,我有一个简单的usercontrol,具有以下属性: public partial class RichTextEditorControl : UserControl { public string EditorText { get { return richTextBox1.Rtf; } set { richTextBox1.Rtf = value; } } public string EditorPlainText

我有一个简单的usercontrol,具有以下属性:

public partial class RichTextEditorControl : UserControl
{

    public string EditorText
    {
        get { return richTextBox1.Rtf; }
        set { richTextBox1.Rtf = value; }
    }

    public string EditorPlainText
    {
        get { return richTextBox1.Text; }
        set { richTextBox1.Text = value; }
    }
}
现在,每当我编辑包含此控件的表单时,VS都会使用以下代码行填充其设计器文件,然后抛出设计器错误:

this.richTextEditorControl1.EditorPlainText = 
   global::Project.Resources.MyResources_de_DE.SomeString;
现在我不知道它从哪里得到这个值???我搜索了整个解决方案,除了1个文件之外,没有任何地方提到这个变量,需要它

而且,代码VS写入时,有错误吗?!它不编译。。。 我唯一能做的就是编辑设计器文件,但是下次我必须用设计器编辑表单时,同样的错误再次发生

 Error  25  The type or namespace name 'MyResources_de_DE' does not exist   
 in the namespace 'Project.Resources' (are you missing an assembly reference?)  

VS究竟从何处获得此值???

您是否在设计器中更改了窗体或控件的语言属性


这将导致项目创建资源文件

在这种情况下,您可能会认为设计器会将您在usercontrol的属性面板中设置的值(放置在使用者中时)与首次创建对象时该属性的值进行比较,并且仅当值不同时才会在usercontrol使用者的设计器文件中生成一行代码。不是这样。您需要在声明前面加上如下属性:

 <System.ComponentModel.DefaultValue("")> public string EditorPlainText ...
公共字符串编辑器文本。。。
从设计器中删除错误行,然后尝试重新生成。这将解决问题

有时,您需要做其他花哨的事情来适应它,例如,如果您的属性是“control”类型,您必须使用它来告诉设计器,如果属性通常为Null,则不要生成额外的(无用的)代码:

 <System.ComponentModel.DefaultValue(GetType(Control), Nothing)> etc...
等等。。。
即使您不在乎,也应该这样做,以防重构和删除不再使用或很少使用的方法(当然,只有在控制所有使用的代码的情况下,您才可以这样做)-从设计器文件中删除的行更少,例如“MyUserControl.UselessProperty=Nothing”


祝你好运。

你不能在设计器中有意义地编辑RTF。我只能猜测,您使用了自定义设计器,但这样分配值有问题。或者,您设法让Windows窗体设计器感到困惑

无论如何,您根本负担不起EditorText属性的序列化。这与EditorPlainText属性严重冲突。它们都设置了富文本框的RTF。一个带格式,另一个不带格式。您现在将获得随机失败,具体取决于最后设置的属性。强制设计器不序列化值,如下所示:

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    public string EditorText {
      // etc..
    }

您必须从表单中删除该控件,然后在此更改后重新添加。

表单没有语言资源文件。提到的资源价值,是我自己添加的一个全局资源。。。