- - PR -
自作コントロールのシリアライズ
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-03-14 16:46
<XP Pro VB.NET2003>
UserControlを継承し自作のコントロールを作りました。 単体での動作は問題ないのですが、別に開いているソリューションに貼り付けようと すると、 「オブジェクトのシリアル化を解除する状態が不足しています。 他の情報が不足しています。」 というエラーメッセージが出力されます。 クラス宣言は下記のようにしています。 <Description("PF拡張"), Serializable()> _ Public Class PF Inherits System.Windows.Forms.UserControl シリアライズ、デシリアライズを自前で作らないといけないのでしょうか? | ||||
|
投稿日時: 2006-03-14 17:33
どうやって貼り付けようとしましたか? ツールボックス以外から貼り付けようとしましたか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-03-14 17:40
あ、そもそも、基底クラスがシリアライズ可能でないと、
SerializationException が発生するような気がします。 と思ったのですが、MarshalByRefObject でSerializableAttribute 属性がついてましたね... orz ところで、そのクラスに静的メンバは含まれていますか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-03-14 18:19
>ツールボックス以外から貼り付けようとしましたか?
そうです。コピー元のソリューションでCTRL+C,コピー先のソリューションのFormデザイナ上でCTRL+Vです。 同一ソリューション内では問題なくコピーできます。 コピー先の参照設定はしてあります。 >ところで、そのクラスに静的メンバは含まれていますか? 含まれていません。 UserControlを継承し、中身はLabelを継承した物でプロパティとイベントを少し いじった程度です。 カスタムコントロールでなければ別ショリューションへのコントロールのコピーは可能ですので、どうにかしてできないかと。 | ||||
|
投稿日時: 2006-03-14 22:44
コピー先で「プロジェクト」−「既存項目の追加」でコピー元のUserControl.vbを選択してもだめですか?
| ||||
|
投稿日時: 2006-03-15 01:25
おそらくこれが原因です。 デシリアライズできないんでしょうね。 そのコントロールをクラス ライブラリ化し、DLL として参照するか、 同じソリューションにプロジェクトを参加させ、プロジェクト参照することで解決するでしょう。 YAS さんの方法は、おそらくリンクによるプロジェクト参加です。 アセンブリとしては重複しますが、手っ取り早い方法のひとつです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-03-15 02:19
「リンクによるプロジェクト参加」の意味をよく知らないのですが, この方法ではコピー元プロジェクトのファイルの複製がコピー先の プロジェクトのフォルダの中に作成されます。 複製の度にフォルダのあっちこっちに同じファイル名のファイルが 作られるので,どれが同じもので,どれがカスタマイズしたものか わからなくなるのがガンです。 | ||||
|
投稿日時: 2006-03-15 08:42
>コントロールをクラス ライブラリ化し、DLL として参照するか
この方法で解決できました。 じゃんぬねっとさん YASさんありがとうございました。 |