简体   繁体   English

在设计时无法在某些属性中“设置”

[英]do not work “set” in some of property in design time

why in desin time do not work set "dataGrid" Property in my code.but property font,with working correct. 为什么在设计时无法正常工作,为什么在我的代码中设置了“ dataGrid”属性。 I used of this componet on the a Form.(i test it with design time debuging) 我在窗体上使用了这个组件。(我在设计时调试了它)

enter code here 
namespace Example
{
  public partial class Component1 : System.Windows.Forms.DataGridView
  {

    public Component1()
    {
    }

    private DataGridViewColumn _gridcolumn;

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    [TypeConverter(typeof ( ExpandableObjectConverter))]
    public DataGridViewColumn gridcolumn
    {
        get
        {
            if (_gridcolumn == null)
                _gridcolumn = new DataGridViewColumn();
            return _gridcolumn;
        }

        set                                                 //Do not Work Set in designTime 
        {
            _gridcolumn = value;
        }
    }


    private System.Drawing.Font _MyFont;
    public System.Drawing.Font MyFont
    {
        get
        {
            if (_MyFont == null)
                _MyFont = new System.Drawing.Font("tahoma", 8);
            return _MyFont;
        }
        set
        {
            _MyFont = value;                                            //Work correctly in design time
        }
    }

    int _with;
    public int withcustom
    {
        get
        {
            return _with;
        }
        set
        {
            _with = value;                                           //Work correctly in design time
        }
    }

}

} }

Short Version 简洁版本

Either remove DesignerSerializationVisibility(DesignerSerializationVisibility.Content) from your property, or change it to DesignerSerializationVisibility(DesignerSerializationVisibility.Visible) . 从您的媒体资源中删除DesignerSerializationVisibility(DesignerSerializationVisibility.Content) ,或将其更改为DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)

Long Version 长版

Applying DesignerSerializationVisibility(DesignerSerializationVisibility.Content) to your property means that the WinForms designer will not generate code that sets the value of the property, but rather code that sets the value of the properties on the value of that property. DesignerSerializationVisibility(DesignerSerializationVisibility.Content)应用于属性意味着WinForms设计器将不会生成用于设置属性值的代码,而是用于在属性值上设置属性值的代码。

For example, say I have these two types: 例如,假设我有以下两种类型:

public class MyControl : Control
{
    public class MyControlProperties
    { 
        public string Prop1 { get; set; }
        public int Prop2 { get; set; }
    }

    private MyControlProperties props;

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public MyControlProperties Properties
    {
        get
        {
            if(props == null) props = new MyControlProperties();

            return props;
        }
    }
}

When the designer generates the code for MyControl on a form, it will look something like this: 当设计人员在表单上为MyControl生成代码时,它将看起来像这样:

myControl.Properties.Prop1 = "foo";
myControl.Properties.Prop2 = 10;

So, instead of setting the value of the Properties property (which, in this code, is read-only; though it doesn't have to be, properties like this usually are), it's setting the values of the properties on the value of that property. 因此,与其设置Properties属性的值(在此代码中为只读;虽然不是必须的 ,通常是像这样的属性),而是在的值上设置属性的 。该财产。

This is good example: 这是一个很好的例子:

public partial class SCon : UserControl
    {
        public SCon()
        {
            InitializeComponent();
            if (Persoanas == null)
            {
                Persoanas = new List<Persoana>();
            }
        }

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public List<Persoan> Persoanas { get; set; }

    }

    [Serializable]
    public class Persoan   
    {
        public int Id { get; set; }
        public String Name { get; set; }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM