2011-01-12 12 views
2

で設計時の値を格納することはできません。これらのボタンの状態は設計者に保存する必要があります。しかしCompactButtonButtonクラスが直列化可能ではない、私は最も重要なプロパティを格納するカスタムクラスを作成しているので:あなたはButtonPanelクラスで見ることができるようにC#が、私はカスタムパネルを持っている私のプロジェクトでは、設計者のVisual Studio 2010の

[Serializable] 
public class CompactButton 
{ 
    #region Member variables 
    private bool _visible; 
    private bool _enabled; 
    private string _tooltip; 
    private string _name; 
    #endregion 

    #region Constructor 
    public CompactButton() 
    { } 
    #endregion 

    #region Properties 
    public string Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 
    public bool Visible 
    { 
     get { return _visible; } 
     set { _visible = value; } 
    } 
    public bool Enabled 
    { 
     get { return _enabled; } 
     set { _enabled = value; } 
    } 
    public string ToolTipText 
    { 
     get { return _tooltip; } 
     set { _tooltip = value; } 
    } 
    #endregion 
} 

、私はリストを返すプロパティCompactButtonsを持っていますCompactButtons

私はデザイナーで、私のButtonPanelを追加して、自分のアプリケーションを構築するとき、私はこのエラーを取得:

Error 1 Could not find a type for a name. The type name was 

'System.Collections.Generic.List`1[[ButtonPanelX.CompactButton, ButtonPanelX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Line 131, position 5. D:\Projecten\ButtonPanelX\ButtonPanelX\Form1.resx 131 5

私はこの問題を解決するために行うには何がありますか?

+0

+1:興味深い問題です。私の最初の考えは、* CompactButtonsはシリアライズ可能ではありません*。しかし、あなたはそれをカバーしています。私の二次的な考えは、おそらく 'ISerializable'からCompactButtonを派生させることです。 – IAbstract

+0

私にコメントしていただきありがとうございます。私はISerializableから派生しようとしていない。私がこれを行うと、すべてのメソッドを実装する必要がありますか?またはデフォルトのものを使用してください。 – Martijn

+0

すべてのメソッドを実装する必要があります。 – IAbstract

答えて

0

私は新しいプロジェクトを作成し、あなたのサンプルを貼り付けました。サンプルに含まれていないものへの参照を削除した後、私のために動作します。

エラーメッセージから、コード内の何かを変更して再コンパイルしたとします。これで、RESXシリアル化フォーマットは無効になりました。シリアル化されたデータを取得すると、シリアライズしたクラスのwhat you can changeで非常に制限されています。

デザイナーファイル resxファイルからコントロールを手動で削除することをお勧めします(xmlエディタでresxを開きます)。

私にはもう1つのヒントがあります:CompactButtonに[Serializable]をまったく使用する必要はありません。これを削除すると、VisualStudioはresxファイルの代わりにdesigner.csファイルにコード別にシリアル化します。私はいつも何かが変わったときに生成されたコードを手動で編集できるので、ほとんどいつもこれを好む。

関連する問題