C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

アンカーを一時的に解除できますか?

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■90789 / inTopicNo.1)  アンカーを一時的に解除できますか?
  
□投稿者/ Q太郎 (1回)-(2019/04/22(Mon) 20:04:26)

分類:[.NET 全般] 

フォームアプリケーションを作成しており、
複数のコントロールに対してアンカーが設定してあります。

これらのコントロールの位置を変えずにフォームのサイズだけを変更したいのですが、
アンカーを設定しているために、全てのコントロールの配置が変わってしまいます。

フォームのリサイズ後に、一つずつコントロールの位置を変更するか
一旦、全てのコントロールのアンカーを解除してから
フォームをリサイズし、再度、アンカーを元に戻す
といういずれかの方法になると思いますが、
非常に面倒です。

何か良い方法はないでしょうか?






引用返信 編集キー/
■90792 / inTopicNo.2)  Re[1]: アンカーを一時的に解除できますか?
□投稿者/ 魔界の仮面弁士 (2154回)-(2019/04/22(Mon) 20:55:04)
No90789 (Q太郎 さん) に返信
> フォームアプリケーションを作成しており、
> 複数のコントロールに対してアンカーが設定してあります。
Anchor プロパティのことだとしたら、既定値は Left および Top ですね。


> これらのコントロールの位置を変えずにフォームのサイズだけを変更したいのですが、
> アンカーを設定しているために、全てのコントロールの配置が変わってしまいます。
「フォーム端からの距離を固定するか否か」を定めるものなので、
Top と Bottom を対で設定すれば高さが動的に変わりますし、
Left と Right を対で設定すれば幅が動的に変わりますね。


> フォームのリサイズ後に、一つずつコントロールの位置を変更するか
> 一旦、全てのコントロールのアンカーを解除してから
> フォームをリサイズし、再度、アンカーを元に戻す
> といういずれかの方法になると思いますが、
> 非常に面倒です。

リサイズさせたいコントロールと、させたくないコントロールがあるというわけではなく、
すべてをリサイズ対象から外すのでしょうか。

だとしたら、フォームに大きめの Panel を配置しておき、その中にコントロールを
Anchor を指定しつつ配置するようにしてみては如何でしょう。
そうすれば、フォームリサイズ時に動的に On/Off する Anchor は
コンテナとなる Panel ひとつだけで済むのではないかと。
引用返信 編集キー/
■90793 / inTopicNo.3)  Re[2]: アンカーを一時的に解除できますか?
□投稿者/ Hongliang (785回)-(2019/04/23(Tue) 09:23:10)
デザイン時の話でしょうか、実行時の話でしょうか。

デザイン時の話であれば、InitializeComponentメソッド内で設定しているClientSizeの値を直接変更することで対応できます。
C#であれば.designer.csを開いて#regionで隠されているところを開いて。
VBであればソリューションエクスプローラのFormのツリーを開いてInitializeComponentをダブルクリック。
引用返信 編集キー/
■90801 / inTopicNo.4)  Re[3]: アンカーを一時的に解除できますか?
□投稿者/ Q太郎 (3回)-(2019/04/23(Tue) 14:24:23)
InitializeComponentでうまくいきました。
どうもありがとうございます。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ