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

コントロールが勝手にリサイズする

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

以前のとあるサイトの過去ログに同様の問題を抱えていた方が
いらっしゃったのですが解決していなかったようですので、
再度質問させてください。

VB.Netにて開発をしておりますが
すでにある程度いろんなコントロールが貼り付けられたフォームに
さらにパネル等を追加しデバッグ実行すると
既にあったコントロールのサイズと位置が勝手に変わってしまいます。
例えば、グリッドなどが縦長に伸びてフォームからはみ出したりします。
size location プロパティをいじって戻しても戻りません。

どなたかご存知の方いらっしゃれば、ヒント・リンク先なんでも
結構ですのでご教授ください。

。。。。バグなんでしょうか。。。。
> VB.Netにて開発をしておりますが
> すでにある程度いろんなコントロールが貼り付けられたフォームに
> さらにパネル等を追加しデバッグ実行すると
> 既にあったコントロールのサイズと位置が勝手に変わってしまいます。
> 例えば、グリッドなどが縦長に伸びてフォームからはみ出したりします。
> size location プロパティをいじって戻しても戻りません。

Dockプロパティを使ってレイアウト制御しているからでは?
Dockプロパティについて調べてみてください。
> Dockプロパティを使ってレイアウト制御しているからでは?
> Dockプロパティについて調べてみてください。

有難うございます。
確かにこのプロパティがくさい感じはするのですが
確認しましたところ、全てのコントロールのDOCKプロパティは
NONEとなっておりました。
もう少しDOCKプロパティを調べてみたいと思います。
Anchorも見た方が良い鴨・・・と口出ししてみたり。
サイズが変わるのは継承したフォームではありませんか?

例えば、
継承元となるフォームにコントロールを貼り付け、Anchorを変更します。
継承先のフォームでこのコントロールのサイズを変更すると、Build時にサイズが
変わってしまいます。

私はこれをバグだと思っています。

見当違いでしたらすみません。
みなさまいろいろな情報を有難う御座います。

> サイズが変わるのは継承したフォームではありませんか?

おっしゃる通りですが、継承していないフォームで検証はしていないので
断定はできませぬが。。。
コントーロールを追加してるのも継承フォームです。

いまだ解決出来ずですが端末によってリサイズされない事もあり
そっちで画面作ってソース丸ごと移し変えて
コーディングって感じでやってます。
(今のところほぼコーディングがメインですので)
ただこのままでは今後に困ってしまいますので
引き続きお願いいたします。
■No8113に返信(ちょんちょんさんの記事)
> みなさまいろいろな情報を有難う御座います。
>
>>サイズが変わるのは継承したフォームではありませんか?
>
> おっしゃる通りですが、継承していないフォームで検証はしていないので
> 断定はできませぬが。。。
> コントーロールを追加してるのも継承フォームです。
>
> いまだ解決出来ずですが端末によってリサイズされない事もあり
> そっちで画面作ってソース丸ごと移し変えて
> コーディングって感じでやってます。
> (今のところほぼコーディングがメインですので)
> ただこのままでは今後に困ってしまいますので
> 引き続きお願いいたします。

案外、ソースにリサイズイベントが入っていたりして...
■No8125に返信(ぺがらぼさんの記事)

> 案外、ソースにリサイズイベントが入っていたりして...

・・・・入ってたらそれはそれで嬉しかったんですが。。。
こんにちは、じゃんぬねっと です。

■No8098に返信(JUNJUNさんの記事)
> 例えば、
> 継承元となるフォームにコントロールを貼り付け、Anchorを変更します。
> 継承先のフォームでこのコントロールのサイズを変更すると、Build時にサイズが
> 変わってしまいます。

Form を継承する時は、Form 内の子コントロールまで継承しようとしないでください。

# 私個人の考えでは、この話 Panel コントロール自体とは関係ないような気がしますが...。
> # 私個人の考えでは、この話 Panel コントロール自体とは関係ないような気がしますが...。

未だに解決しておりません。。。
例えば、とあるラベルのプロパティのTEXTを変更しただけで
フォームが画面内に収まらなくなります。大きくなって
いったいどこに原因があるのでしょうか??
こんにちは、じゃんぬねっと です。

■No8260に返信(ちょんちょんさんの記事)
> 未だに解決しておりません。。。
> 例えば、とあるラベルのプロパティのTEXTを変更しただけで
> フォームが画面内に収まらなくなります。大きくなって
> いったいどこに原因があるのでしょうか??

この現象は、説明してある限りに起こりうるものとは限りません。
また、コントロールの位置関係などは言葉では説明しづらいですよね...。
このサイトに zip などで固めて、アップすると解決に協力できるかもしれません。
とはいえ「公開しても問題なければ」の話、ですが... (^-^;)
じゃんぬねっと さん
末永いお付き合い有難うございます。

残念ながらソースをUPする事は出来ませんが少し調査して分かった事を。。。

15インチ画面解像度1024*768のPCで作成したソースを
17インチ画面解像度1024*768のPCに移動し
フォーム上のコントロールに手を加えるとサイズが大きくなる。
フォームのAutoScaleプロパティはFalseにしている。
17インチの画面解像度を1152*864にすればリサイズされた後も
画面内に収まっているのでリサイズ後にもう1度つくり直すしかないのでしょうか?
何かプロパティの設定が足りないのでしょうか?
FormのAutoScaleがTrueになっていて勝手にリサイズされていて悩んだ経験が
あります。
>15インチ画面解像度1024*768のPCで作成したソースを
>17インチ画面解像度1024*768のPCに移動し

文中で出てくるOSを全て明記してみてください。
こげ様

AutoScaleはfalseである事を確認致しました。

中 博俊様

> 文中で出てくるOSを全て明記してみてください。

15インチのPC
win xp professional version2002 sp2
17インチのPC
win xp professional version2002 sp1
です。
spが異なりますがここなんでしょうか?

よろしくお願いいたします。
じゃフォントの設定はどうですか?
画面のプロパティ -> 設定 -> 詳細設定 -> 全般 -> 画面 -> DPI設定
ともに96DPIとなっております。

不思議なのはコードで
label12のtextプロパティに"ほにゃらら"とあるのを
フォームロード イベントで
label12.text="変更"
とする限りはフォームやラベルのサイズが変わる事はありません。

label12のtextプロパティに"ほにゃらら"とあるのを変更すると現象が起こります


> じゃフォントの設定はどうですか?
> 画面のプロパティ -> 設定 -> 詳細設定 -> 全般 -> 画面 -> DPI設定
関連した事象なのか分かりませんが、
トピック『PanelのAutoscroll時に、、』というトピックで、
以下の様に、配置がむちゃくちゃになる件は解決できました。

もし、同じ原因でなければすみません。
===
@ panel1.Controls.Clear() する。
A 配置する全てのコントロールのSize, Locationなど配置関連を確定する。
Anchorは使えない模様。
B 配置したいコントロールの個数を数え、以下の配列を作って、そこに貯める。
Control[] ctrlArray = new Control[num];
C panel1.Controls.AddRange(ctrlArray); 一気に書き込み。

というやり方で解決しました。
個々に panel1.Controls.Add() はなぜかうまく行きませんでしたが、、
さかつ様

ご助言有難うございます。
ただ、当方の困難はデザイナー使用時に限ります。
コードでコントロールを作成・制御する場合は全く何も起こりません。

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