【问题标题】:c# Form Designer - generated code problemc# Form Designer - 生成代码问题
【发布时间】:2011-10-18 07:21:53
【问题描述】:

我在主窗体上有地图控制。问题是,当表单设计器生成代码时,用新值覆盖变量的值(RouteOverlay 和 MarkerOverlay),我不希望这样。

生成代码之前

//Map.cs
RouteOverlay = new GMapOverlay(this, "routes");
MarkerOverlay = new GMapOverlay(this, "markers");

生成代码后

//MainForm.designer.cs
this.map1.MarkerOverlay = ((GMap.NET.WindowsForms.GMapOverlay)(resources.GetObject("map1.MarkerOverlay")));
this.map1.RouteOverlay = ((GMap.NET.WindowsForms.GMapOverlay)(resources.GetObject("map1.RouteOverlay")));

【问题讨论】:

    标签: c# form-designer overriding


    【解决方案1】:

    [DesignerSerializationVisiblity(DesignerSerializationVisiblity.Hidden)] 添加到属性中。
    这将完全阻止设计者保存它们。

    【讨论】:

    • 请注意,您在设计器中所做的任何更改都不会被保存。考虑添加[Browsable(false)]
    • 如果您希望能够决定是否序列化一个属性(例如,您只想在值与默认值不同时对其进行序列化),只需添加一个名为 ShouldSerializeMarkerOverlay 的方法当属性必须被序列化时返回 true,否则返回 false。
    猜你喜欢
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2016-11-22
    相关资源
    最近更新 更多