質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

22870閲覧

スクロールバーが表示されない

tadanoosakana

総合スコア30

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2015/11/18 15:15

###前提・実現したいこと
Panelの表示範囲を示す
スクロールバーを表示したい

###発生している問題・エラーメッセージ
panel.AutoScroll を 有効にしても
スクロールバーが表示されない

###ソースコード

C#

1using System; 2using System.Drawing; 3using System.Windows.Forms; 4 5class Program 6{ 7 public static void Main() 8 { 9 Application.EnableVisualStyles(); 10 Application.Run(new MyForm()); 11 } 12} 13 14class MyForm : Form 15{ 16 MenuItem menuItem; 17 StatusBar statusBar; 18 19 Panel panel; 20 PictureBox[,] pictureBoxes = new PictureBox[9, 160]; 21 22 public MyForm() 23 { 24 settingForm(); 25 settingMenu(); 26 settingStatusBar(); 27 settingPanel(); 28 settingPictureBox(); 29 } 30 31 /* フォームの設定を行う */ 32 private void settingForm() 33 { 34 Text = "ステージエディタ サンプル"; 35 BackColor = Color.White; 36 Size = new Size(528, 368); 37 } 38 39 /* メニューの設定を行う */ 40 private void settingMenu() 41 { 42 menuItem = new MenuItem("ファイル (&F)"); 43 44 Menu = new MainMenu(new MenuItem[] { menuItem }); 45 } 46 47 /* ステータスバーの設定を行う */ 48 private void settingStatusBar() 49 { 50 statusBar = new StatusBar(); 51 statusBar.Parent = this; 52 statusBar.Text = "ステータスバー"; 53 } 54 55 /* パネルの設定を行う */ 56 private void settingPanel() 57 { 58 panel = new Panel(); 59 panel.Parent = this; 60 panel.Location = new Point(0, 0); 61 panel.Size = new Size(5120, 288); 62 panel.BackColor = Color.DarkGray; 63 panel.AutoScroll = true; 64 //panel.Dock = DockStyle.Fill; 65 } 66 67 /* ピクチャボックスの設定を行う */ 68 private void settingPictureBox() 69 { 70 var test = Image.FromFile("test.png"); 71 72 for (int y = 0; y < 9; y++) 73 { 74 for (int x = 0; x < 160; x++) 75 { 76 pictureBoxes[y, x] = new PictureBox(); 77 pictureBoxes[y, x].Parent = panel; 78 pictureBoxes[y, x].Location = new Point(x * 32, y * 32); 79 pictureBoxes[y, x].Size = new Size(32, 32); 80 pictureBoxes[y, x].Image = test; 81 pictureBoxes[y, x].SizeMode = PictureBoxSizeMode.StretchImage; 82 } 83 } 84 } 85}

複数のPictureBoxをPanelが親となるように設置し、
Panelがウィンドウからはみ出すときに表示されるスクロールバーによって
PnelもといPictureBoxがスクロールされることを期待していましたが、
スクロールバーが表示されません。

どなたか教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

AutoScrollをtrueにしても全ての子ウィンドウを表示するのに必要なサイズが自身のサイズを超えないとスクロールバーは表示されません。
panelのサイズが5120x288で全てのPictureBoxがその領域に(ぴったり)収まるのでpanelの領域内に子ウィンドウ全てを表示できていることになりスクロールバーは表示されません。
panelのサイズをformのサイズにするなど全ての子ウィンドウを表示するのに必要なサイズよりも小さくすれば表示されます。

投稿2015/11/18 15:58

toki_td

総合スコア2850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tadanoosakana

2015/11/18 19:03

できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問