.net Visual Studio一直在设计器文件中插入默认属性值
我有一个简单的usercontrol,具有以下属性:.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
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..
}
您必须从表单中删除该控件,然后在此更改后重新添加。表单没有语言资源文件。提到的资源价值,是我自己添加的一个全局资源。。。