前提
visual stadio2022を使ってc#でプログラミングしています。
ショッピングサイトのようなシステムを作っています。
それを実装のとき、Windowサイズをマウスで大きさが変更するとき、
Form内のパネルに追加したユーザーコントロールのSizeの大きさが変わらない。
VisualStudioでwindows formのForm上には
Panel1(左上)、Panel2(右上)、Panel3(左下)、Panel4(右下)で構成されています。
また、Panel3(左下)にはUserControl1とUserControl2
Panel4(右下)にはUserControl3、UserControl4…
と複数のユーザーコントロールが追加されています。
これのユーザーコントロールは
例)画面遷移を行うときにpanel3内のUserControl1からUserControl2に表示を変えて、
Panel4のUserControl3はUserControl4…などの表示に変わり使います。
実現したいこと
実装するとき、Googleサイトやショッピングサイト(Amazonのサイドメニューや商品の一覧の画面)のようにWindowサイズをマウスで変更するとき、
配置されているpanelに追加したユーザーコントロールの大きさがFormの画面のサイズやpanelのサイズに自動的に調整されていること
つまり、
1.Formの大きさを変えたとき、panel3やpanel4の大きさがFormのサイズに合わせて自動的に変わるようにする。
2.例)panel3に追加されているUserControl1とUserControl2の大きさが
1のときに調整されたpanel3と同じサイズで適切に調整し画面に表示されている。
試したこと
1について、panel3のAnchroプロパティをtop、left、bottomと設定することで
panel3の大きさがWindowsフォームのサイズ変更とともに、パネルの高さが広がったり縮んだりするようになりました。
その後
2についてUserControl1を適切にサイズ変更するために以下の2つのソースコードのどちらかを使った。
c#
1 public partial class UserControl1 : UserControl 2 { 3 public UserControl1() 4 { 5 InitializeComponent(); 6 //Formを取得 7 Form1 form = (Form1)this.FindForm(); 8 //ユーザーコントロールのサイズを変更(下の2つのコードのどちらかを使って行う) 9 form.userControl1.Size = form.panel3.Size; 10 11 Size = form.panel3.Size; 12 } 13 }
や
c#
1 public partial class UserControl1 : UserControl 2 { 3 4 private void UserControl1_SizeChanged(object sender, EventArgs e) 5 { 6 7 Form1 form = (Form1)this.FindForm(); 8 //form.userControl1.Size = form.panel3.Size; 9 Size = form.panel3.Size; 10 } 11 } 12
また、 AutoSizeとAutoSizeModeを変更するなどのさまざまな組み合わせを使用しようとしましたが、うまく機能していないようです。最終的にUserControlのサイズが十分に大きくならなず、まったく変わらない状態になってしまいます。
補足
Form1のソースコードはこのようになっています。
c#
1public partial class Form1 : Form 2 { 3 4 //ユーザーコントロール1 5 public userControl1 page = new UserControl1(); 6 //ユーザーコントロール2 7 public userControl2 page = new UserControl2(); 8 //ユーザーコントロール3 9 public userControl3 page = new UserControl3(); 10 //ユーザーコントロール4 11 public userControl4 page = new UserControl4(); 12 13 14 public Form1() 15 { 16 InitializeComponent(); 17 18 //パネル4にユーザーコントロールを追加 19 panel4.Controls.Add(userControl3); 20 panel4.Controls.Add(userControl4); 21 22 //画面遷移するための画面の表示の切り替え 23 userControl3.Visible = false; 24 userControl4.Visible = true; 25 26 //ユーザーコントロールの画面を追加 27 panel3.Controls.Add(userControl1); 28 panel3.Controls.Add(userControl2); 29 30 userControl1.Visible = false; 31 userControl2.Visible = true; 32 33 } 34 35 }






回答1件
あなたの回答
tips
プレビュー