Re: Ошибка загрузки значения свойства в DesignMode
От: muse Россия  
Дата: 19.04.07 11:01
Оценка:
Здравствуйте, Inquisitive, Вы писали:

I>В чем тут проблема?


Сделай ReferenceParameter сериализуемым.
Примерно так:


[Serializable]
public class GridColumnInfo : ISerializable
{
    private string Column_Name;
    private string DataColumn_Name;
    private string Column_HeaderText;
    private bool Column_Visible;
    private bool frosen;
    private int Column_Width;
    private int Column_DisplayIndex;

    #region .ctor

    public GridColumnInfo()
    {
        Column_Name = "";
        Column_HeaderText = "";
        Column_Visible = true;
        frosen = false;
        Column_Width = -1;
        Column_DisplayIndex = -1;
    }

    private GridColumnInfo(SerializationInfo info, StreamingContext context)
    {
        if (info == null)
        {
            throw new ArgumentNullException("info");
        }
        this.Column_Name = (string)info.GetValue("Column_Name", typeof(string));
        this.Column_HeaderText = (string)info.GetValue("Column_HeaderText", typeof(string));
        this.Column_Visible = (bool)info.GetValue("Column_Visible", typeof(bool));
        this.frosen = (bool)info.GetValue("frosen", typeof(bool));
        this.Column_Width = (int)info.GetValue("Column_Width", typeof(int));
        this.Column_DisplayIndex = (int)info.GetValue("Column_DisplayIndex", typeof(int));
    }

    #endregion

    [
    SecurityPermissionAttribute(
        SecurityAction.LinkDemand, 
        Flags = SecurityPermissionFlag.SerializationFormatter)
    ]
    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        if (info == null)
        {
            throw new ArgumentNullException("info");
        }
        info.AddValue("Column_DisplayIndex", this.Column_DisplayIndex);
        info.AddValue("Column_HeaderText", this.Column_HeaderText);
        info.AddValue("Column_Name", this.Column_Name);
        info.AddValue("Column_Visible", this.Column_Visible);
        info.AddValue("Column_Width", this.Column_Width);
        info.AddValue("frosen", this.frosen);
    }

    public string DataColumnName
    {
        get { return this.DataColumn_Name; }
        set { this.DataColumn_Name = value; }
    }
    public string Name
    {
        get { return this.Column_Name; }
        set { this.Column_Name = value; }
    }
    public bool Visible
    {
        get { return this.Column_Visible; }
        set { this.Column_Visible = value; }
    }
    public int Width
    {
        get { return this.Column_Width; }
        set { this.Column_Width = value; }
    }
    public int DisplayIndex
    {
        get { return this.Column_DisplayIndex; }
        set { this.Column_DisplayIndex = value; }
    }
    public string HeaderText
    {
        get { return this.Column_HeaderText; }
        set { this.Column_HeaderText = value; }
    }
    public bool IsFrosen
    {
        get { return this.frosen; }
        set { this.frosen = value; }
    }
}



Код использования

[NonSerialized]
private List<GridColumnInfo> сolumnsSettings;

[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[DefaultValue(null)]
public List<GridColumnInfo> GridColumns
{
    get
    {
        if (this.сolumnsSettings == null)
            this.сolumnsSettings = new List<GridColumnInfo>();
        return this.сolumnsSettings;
    }
    set
    {
        this.сolumnsSettings = value;
        OnConfigurationChanged();
    }
}
Люблю повеселиться, особенно пожрать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.