DOBON.NET DOBON.NETプログラミング掲示板過去ログ

デザイナ自動生成コードの生成順を制御したい

分類:[.NET]

OS:XP/Vista/7
言語:VB/C#/DelphiPrism
.NET:2.0

こんばんわ

現在カスタムコントロールを作っています。
このコントロールのプロパティを設定した際、特定のプロパティは
他の特定のプロパティより後に自動生成してほしいのですが、
そんな制御は可能なのでしょうか。

以下経緯:

カスタムコントロールにはItemsプロパティがあり、さらに現在選択中のアイテムの
インデックスを示すCurrentIndexプロパティがあります。

このCurrentIndexプロパティはデザイナで変更可能とし、
変更された際に表示処理等内部で処理を行うためアイテム数以上の値が代入されたら
例外を投げるようになっています。

ここで、デザイナのコレクションエディタでアイテムを2つ追加した場合、
CurrentIndexを1に設定するのは当然OKで、
2を設定すると例外となりプロパティ変更がキャンセルされるのも正常な動作です。

が、1を設定した状態でデザイナを開き直した際にデザイナのエラーとなります。
(実行時も例外発生)

デザイナで自動生成されたコードが、Items.Addよりも
CurrentIndex = 1のほうが先に来ているのが原因だと判明したことから
今回の質問となります。

以上よろしくお願いします
※ListBoxとかどうやってるんだと思ったら、SelectedIndexとかはプロパティグリッド非表示でした…
ISupportInitialize を実装するのはどうでしょう?
■No26586に返信(Hongliangさんの記事)
> ISupportInitialize を実装するのはどうでしょう?

ISupportInitializeを実装して、BeginInitからEndInitまでの間は
プロパティ変更しても処理をさせずEndInitで一気に処理させる形にすることで
解決できました。ありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板