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

自作のToolStripItemのデザイナ対応について

環境/言語:[言語:]
分類:[.NET]

お世話になります。

# 書き込みルールは確認していますが、初の投稿なので不備等ありましたらご指摘ください。

現在 Visual Studio 2008(C#)でWindowsフォームのプログラムを作成しています。
下記を参考に、StatusStripにアイコンを表示させるStripItemを作成したのですが、デザイナでおかしな現象が起こります。

参考先 : http://dobon.net/vb/dotnet/control/tschdesigneravail.html
失礼しました、途中でフォームを送信してしましました。


「おかしな現象」の内容なのですが、StatusStripに自作のStripItemを追加してビルドすると、
ビルド自体は問題なく成功するのですが、フォームのデザイナが崩れてしまいます。
(具体的には、一部が真っ白になる、StatusStripに追加した項目の一部が消える、などです)
また、そのままフォームの内容を変更しようとしても、デザイナが変更状態(名称の横に*がつく)にならず、
デザイナを閉じて再度開くと変更前の状態に戻っていることから、おそらく一切変更できなくなってしまいます。
(閉じて開き直せばまた編集できるのですが、、、)

ちなみにフォームの構成は、
・ToolStripContainerをDock.Fillで配置
・上部にMenuStripを配置して、標準 + α の項目を追加
・下部にStatusStripを配置して、ラベル、プログレス、アイコンを追加
のみです。

アイコン用の項目は、ToolStripControlHostのコンストラクタでPictureBoxを追加し、
ToolStripItemDesignerAvailability属性を追加した以外何もやっていません。


この現象に思い当たる方がいらっしゃいましたら、解決方法をご指導いただきたく思います。
よろしくお願いします。
VS2008 SP1で試してみましたが、ご指摘のような現象が確認できました(VS2005では問題ありませんでした)。いろいろ試してみましたが、とりあえずToolStripControlHostから派生した自作のToolStripItemを別プロジェクトにしてDLLとすれば解消できました。試してみてください。
> 管理人 様

ご検証、ご回答ありがとうございます。

> ToolStripControlHostから派生した自作のToolStripItemを別プロジェクトにして

私の環境でも
・VS2005では現象は起こらない。(ビルドしてもデザイナの表示は一切崩れない)
・VS2008でもプロジェクトを分けると起こらない(※)
が確認できました。

VS2008については「ToolStripControlHostのサブクラスのビルドが発生した場合」にデザイン崩れが発生するのではないかと推測されます。
例えば同一ソリューション内にフォームとコントロールのプロジェクトを置いた場合、コントロール用のプロジェクトで(変更などで)ビルドが発生すると、
やはりフォームのデザイナで崩れました。
(ちゃんと調べていないので、あくまで個人的推測ですが)

また、他のToolStripItemを使用できるコントロールを試してみたのですが、
・MenuStrip     ⇒ 崩れる
・ToolStrip     ⇒ 崩れる
・ContextMenuStrip  ⇒ 崩れない
という結果でした。
(ContextMenuStripは普段表示されないコントロールだからでしょうか?この辺りもはっきりとは調べがついていません)

当面は、プロジェクトを別にした上で、必要時以外はコントロール用のプロジェクトをアンロードすることで不具合を回避しようと思います。

ありがとうございました。
解決済み!

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