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

カスタムコントロールのサイズが勝手に変わってしまう問題について

環境/言語:[XP(SP2) VB2005SP1 .NET 2.0]
分類:[.NET]

はじめまして。LAPと申します。

VB2005SP1で、Windowsアプリケーションの開発を行っており、以下の問題が発生して困っております。
どなたか、知恵を貸していただけますでしょうか。

[問題発生時の手順]
1.PictureBoxとLabelを貼り付けたカスタムコントロールを作成し、MouseDownとMouseUpでImageが変わる「ボタン」を作成しました。
2.上記のカスタムコントロールを配置したフォームを作成しました。
3.DLLプロジェクトを作成し、1のカスタムコントロールをそちらへ移動しました。
4.2のプロジェクトからカスタムコントロールを削除し、3で作成したDLLを参照するようにしました。
5.カスタムコントロールの配置される名前空間が変わったため、*.Designer.vbファイルを修正し、参照先を3で作成したDLLにしました。(※)

[問題の現象]
・上記の手順の後、デザイナでフォームを開くと、カスタムコントロールのサイズが大きくなってしまいました。(元のサイズは170,54→デザイナのSizeプロパティは240,76)
・その後も、何度かコントロールのサイズが大きくなる現象は発生しています。
・大きくなった後のサイズはさまざまですが、同じ大きさのコントロールは、大きくなっても同じ大きさになるようです。また、小さくなったことはありません。
・確信はありませんが、コントロールに修正が入ってコンパイルされると、フォーム上のコントロールが大きくなるようです。

※5の手順の一例を挙げると以下のような具合です。
Me.ラベル付ボタン2 = New Project1.ラベル付ボタン
               ↓
Me.ラベル付ボタン2 = New ラベル付ボタン
(もともと、Project1に含めていたコントロールをDLLにして
     参照設定したため、名前空間のサフィックスを削除)

長文になってしまい申し訳ありません。何か情報をお持ちの方が折られましたら、よろしくお願いいたします。
2008/05/08(Thu) 12:44:52 編集(投稿者)

■No22000に返信(LAPさんの記事)
> ・上記の手順の後、デザイナでフォームを開くと、カスタムコントロールのサイズが大きくなってしまいました。(元のサイズは170,54→デザイナのSizeプロパティは240,76)
貼りつける Form 側、および、UserControl それぞれの AutoScaleMode は
どのように設定されていますか?
http://msdn2.microsoft.com/ja-jp/library/ms229605.aspx


> また、小さくなったことはありません。
AutoSize が有効になっていて、AutoSizeMode が、(GrowAndShrink ではなく)
GrowOnly になっていた…とか。
魔界の仮面弁士 様

早速の回答をありがとうございます。

リンク先を読ませていただきました。恥ずかしながら非常に高度で理解に苦しんでいますが、勉強になります。しかしながら、、

>>また、小さくなったことはありません。
> AutoSize が有効になっていて、AutoSizeMode が、(GrowAndShrink ではなく)
> GrowOnly になっていた…とか。

問題の現象はこっちが原因でした。
コントロールを作成しているプロジェクトではAutoSizeはFalseにしていますが、問題が発生したFormに配置したコントロールのAutoSizeがTrueで、AutoSizeModeがGrowOnlyになっていました。
ここのAutoSizeをFalseにすることにより問題が発生しなくなりました。
AutoSizeでコントロールが大きくなってしまったということは、コントロール内の何れかのコントロールのサイズが大きくなっているでしょうね。これから、調査します。

とにかく、今回の現象はなんとかなりました。本当にありがとうございました。
解決済み!

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