Making the Visual Studio designer ignore a public property

前端 未结 4 2167
小蘑菇
小蘑菇 2021-02-13 19:48

I have a UserControl with a public property using the following attributes:

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.H         


        
相关标签:
4条回答
  • 2021-02-13 20:30

    Try using a private field with the property's accessor methods along with the [field: NonSerialized] attribute:

    [field: NonSerialized]
    private MyType _MyProperty;
    
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    public MyType MyProperty
    {
        get
        {
            return _MyProperty;
        }
        set
        {
            _MyProperty = value;
        }
    }
    
    0 讨论(0)
  • 2021-02-13 20:42

    Use [DesignerSerializationVisibilityAttribute ( Visibility = Hidden )]

    MSDN Article

    0 讨论(0)
  • 2021-02-13 20:42

    I failed to find a real solution, but a workaround instead...

    I had to go into the Form.resx file and locate the data/value key pair that it was deserializing into my public property. I manually deleted the XML pair contents and then I was able to run the application.

    This allowed my application to build and run without errors. Everything else I tried (including deleting the container form for my UserControl and re-creating it repeatedly) did not work.

    0 讨论(0)
  • 2021-02-13 20:47

    Making the property read only at design time will prevent it being serialized into the resx file. Strangely if MyType happens to be a collection the read only is ignored by the designer and you can still set the property at design time even though the property isn't written out into the resx so it's best to make the property not browsable too.

    [ReadOnly(true)]
    [Browsable(false)]
    public MyType MyProperty
    {
        get { return _MyProperty; }
        set { _MyProperty = value; }
    }
    
    0 讨论(0)
提交回复
热议问题