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

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

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

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

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

2回答

1923閲覧

windowsフォームのformのサイズが一定より大きくならない

Spe3

総合スコア12

C#

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

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2022/08/23 07:42

前提・やりたいこと

地図を描画するプログラムを作っており、ウィンドウに1000px×1000pxの地図を表示させるために、それと同等、もしくはそれ以上の大きさのFormに設定したいです。

発生している問題・エラーメッセージ

プロパティ内でSizeを変更しても、それよりも小さい値に戻される。(今回の場合、横が1300、縦が740より大きくならない)

試したこと

コンストラクタ内で大きさを宣言してみたが、エラーが生じた。

Form1.cs

1 public Form1() 2 { 3 InitializeComponent(); 4 AllocConsole(); 5 Form1 form = new Form1(); 6 form.Size = new Size(1000, 1000); 7 form.Show(); 8 }

エラー

以下のコードのコメントしている部分で例外を受け取っている。
予想としては

this.ClientSize = new System.Drawing.Size(1284, 701);

の部分がいけないのでと思い、値を変えてみたが、同じように例外をを受け取りました。

Form1.Designer.cs

1 private void InitializeComponent() 2 { 3 this.AuthorsDataSet = new System.Data.DataSet(); 4 this.DataLoadButton = new System.Windows.Forms.Button(); 5 this.ShowConsoleButton = new System.Windows.Forms.Button(); 6 this.pictureBox1 = new System.Windows.Forms.PictureBox(); 7 ((System.ComponentModel.ISupportInitialize)(this.AuthorsDataSet)).BeginInit(); 8 ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 9 this.SuspendLayout(); 10 // 11 // AuthorsDataSet 12 // 13 this.AuthorsDataSet.DataSetName = "AuthorsDataSet"; 14 // 15 // DataLoadButton 16 // 17 this.DataLoadButton.Location = new System.Drawing.Point(14, 55); 18 this.DataLoadButton.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); 19 this.DataLoadButton.Name = "DataLoadButton"; 20 this.DataLoadButton.Size = new System.Drawing.Size(125, 34); 21 this.DataLoadButton.TabIndex = 4; 22 this.DataLoadButton.Text = "data_load"; 23 this.DataLoadButton.UseVisualStyleBackColor = true; 24 this.DataLoadButton.Click += new System.EventHandler(this.DataLoadButton_Click); 25 // 26 // ShowConsoleButton 27 // 28 this.ShowConsoleButton.Location = new System.Drawing.Point(14, 13); 29 this.ShowConsoleButton.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); 30 this.ShowConsoleButton.Name = "ShowConsoleButton"; 31 this.ShowConsoleButton.Size = new System.Drawing.Size(192, 34); 32 this.ShowConsoleButton.TabIndex = 5; 33 this.ShowConsoleButton.Text = "Show Console"; 34 this.ShowConsoleButton.UseVisualStyleBackColor = true; 35 this.ShowConsoleButton.Click += new System.EventHandler(this.ShowConsoleButton_Click); 36 // 37 // pictureBox1 38 // 39 this.pictureBox1.BackColor = System.Drawing.Color.White; 40 this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 41 this.pictureBox1.Location = new System.Drawing.Point(14, 96); 42 this.pictureBox1.Name = "pictureBox1"; 43 this.pictureBox1.Size = new System.Drawing.Size(500, 500); 44 this.pictureBox1.TabIndex = 6; 45 this.pictureBox1.TabStop = false; 46 this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint); 47 // 48 // Form1 49 // 50 this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 18F); 51 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 52 this.ClientSize = new System.Drawing.Size(1284, 701); 53 this.Controls.Add(this.pictureBox1); 54 this.Controls.Add(this.ShowConsoleButton); 55 this.Controls.Add(this.DataLoadButton); 56 this.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); 57 this.Name = "Form1"; 58 this.Text = "Form1"; 59 ((System.ComponentModel.ISupportInitialize)(this.AuthorsDataSet)).EndInit(); 60 ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 61 this.ResumeLayout(false); //この部分で例外を受け取る 62 63 }

補足情報(FW/ツールのバージョンなど)

VisualStudio2019
C# .NET Framework 4.7.2
Windows Forms

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/08/23 08:06 編集

> コンストラクタ内で大きさを宣言してみたが、エラーが生じた。 そのコードがそもそも変です。Form1 のコンストラクタで new Form1() するなんてことはあり得ないと思いますけど。
Spe3

2022/08/23 08:12

ネットの情報で手あたり次第試しているので、もしかしたらわけのわからないことをしているかもしれません。そこはご了承ください。一応参考にしたサイトのQ&Aを貼っておきます。自分の解釈が間違っているだけかもしれません。 https://social.msdn.microsoft.com/Forums/ja-JP/4350ff11-61e2-4f0c-8042-34f9b358da7e/12454124511253112489124541239812469124521247412364353732345012?forum=csharpgeneralja
退会済みユーザー

退会済みユーザー

2022/08/23 08:19

コンストラクタを以下のようにしたらどうなりますか? public Form1() { InitializeComponent(); this.Size = new Size(1000, 1000); }
KOZ6.0
Spe3

2022/08/23 08:24 編集

SurferOnWwwさんのコードのように変換したらちゃんと思い通りのウィンドウが表示されました。ありがとうございます!
Spe3

2022/08/23 08:26

KOZ6.0さんありがとうございます。その部分はちょっと自分の力量では解決できそうにはないので、追々理解していこうと思います。
退会済みユーザー

退会済みユーザー

2022/08/23 08:31

> 一応参考にしたサイトのQ&Aを貼っておきます。 その話は Size と ClientSize の違いのことを言っているようです。 Size: Form のサイズ。 ClientSize: クライアント領域(コントロールの範囲から、スクロール バー、境界線、タイトル バー、メニューなどのクライアント以外の要素を除いた部分)のサイズ
draq

2022/08/23 08:32

Form1 の MaximumSize が設定されている時の挙動っぽいですけど、Form1.Designer.cs に設定はないですね。提示されているコードは本当に実際のコードなんでしょうか? あと例外名も書いてください。 想像ですが、コンストラクタで Form1 のインスタンスを作成しているため、再帰的かつ無限にコンストラクタが呼ばれ、結果 System.StackOverflowException が発生しているのでしょう。
guest

回答2

0

ベストアンサー

コンストラクタを以下のようにしたらどうなりますか?

C#

1public Form1() 2{ 3 InitializeComponent(); 4 5 this.Size = new Size(1000, 1000); 6}

クライアント領域(コントロールの範囲から、スクロール バー、境界線、タイトル バー、メニューなどのクライアント以外の要素を除いた部分)のサイズを指定するなら以下でどうですか?

C#

1public Form1() 2{ 3 InitializeComponent(); 4 5 //this.Size = new Size(1000, 1000); 6 7 this.ClientSize = new Size(1000, 1000); 8}

投稿2022/08/23 08:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Spe3

2022/08/23 08:33

どちらのコードでも思い通りのウィンドウを表示させることができました!非常に助かりました!改めてありがとうございました!
退会済みユーザー

退会済みユーザー

2022/08/24 01:05

理由も書かずに低評価をつける卑怯者は誰?
guest

0

この制限に引っかかってるんじゃないかな

https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form.size?view=windowsdesktop-6.0

このプロパティの最大値は、フォームを実行する画面の解像度によって制限されます。 この値は、各画面のサイズに対して 12 ピクセルを超えることはできません (水平 + 12 および垂直 + 12)。

投稿2022/08/23 08:07

RiaFeed

総合スコア2701

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

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

Spe3

2022/08/23 08:30

なるほど、そのような制限が存在していたのですね。 サイト内の以下の部分でもしかしたら解決できそうなので、試してみようと思います。また、今回はSurferOnWwwさんのコードでうまくウィンドウが表示されたので、その手法で行おうと思います。回答ありがとうございました! >ポケット PCデバイスでは、コントロールを設定FormBorderStyleして削除MainMenuすることで、サイズ変更可能なウィンドウをNone作成できます。 SmartPhone デバイスでは、サイズを Form 変更することはできません。常に画面全体に表示されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問