いつも大変お世話になっております。
親フォームを最大化し、その中で子フォームを最大化したいのですが、以下のプログラムですと、親フォームと子フォームが重なってしまいます。
何かいい方法など御座いますでしょうか?
お手数おかけして申し訳ございませんが、ご指導ご鞭撻の程よろしくお願い致します。
● 親フォーム
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 最大化 this.WindowState = System.Windows.Forms.FormWindowState.Maximized; //子フォームとするフォームを作成する Form2 fm = new Form2(); //親フォームをこのフォームにする fm.MdiParent = this; //子フォームを表示する fm.Show(); } }
}
● 子フォーム
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
// 最大化 this.WindowState = System.Windows.Forms.FormWindowState.Maximized; this.FormBorderStyle = FormBorderStyle.None; } }
}
見づらいですが図も添付させて頂きました。
追記1===========================================
お答えありがとうございます。
追記させて頂きます。
再度ご教授願えませんでしょうか?
Tak1wa様のプログラムソースを実行させて頂きました。その際の画像が以下となります。
青枠のバーが出てきてしまう、又、赤枠内に表記されていないが、クリックすると最小化・最大化・閉じるのイベントが起こってしまう。
という新たな問題が発生してしまいました。
子フォーム内を以下のようにすると、理想に近い形にはなりました。
●子フォーム
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}
private void Form2_Load(object sender, EventArgs e) { // this.WindowState = System.Windows.Forms.FormWindowState.Maximized; } }
}
この方法で進めるとした場合、
フォームプロパティ内の「Size」の値を調節する形となると思うのですが、
最大化した際の値はどのように取れますでしょうか?
今現在、Form2のサイズは「300x300」なので右側に親フォームが見えてしまっている状態です。
追記2===============================================
sgr-2様のプログラムソースをお借りし、実行してみました。
その結果、少しずれが生じてしまっているようです。
Tak1wa様からのコメントで、
「余談ですがFormBorderStyleの変更後にWindowStateを変更しないと位置などちょっとずれます」
とのアドバイスを頂いており、
「FormBorderStyle」後に、再度「this.WindowState = FormWindowState.Maximized;」で最大化を指示したのですが、
ズレが解消されませんでした。
何が原因かわかる方いらっしゃいますでしょうか?
何度も質問し心苦しいのですが、再度ご教授願えませんでしょうか?
● Form1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.IsMdiContainer = true; this.WindowState = FormWindowState.Maximized; } private void Form1_Load(object sender, EventArgs e) { //子フォームとするフォームを作成する Form2 fm = new Form2(); fm.MdiParent = this; fm.WindowState = FormWindowState.Maximized; // Form2のコンストラクタやLoadに書いても良いです fm.FormBorderStyle = FormBorderStyle.None; fm.Show(); } }
}
● Form2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; //this.WindowState = FormWindowState.Maximized; } private void Form2_Load(object sender, EventArgs e) { this.FormBorderStyle = FormBorderStyle.None; //this.WindowState = FormWindowState.Maximized; } }
}
● 追記3 ===================================================
ズレを解消することができませんでした・・・
何か進展がありましたら、再度ここに投稿させて頂きます。
皆様ご協力感謝いたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/18 08:19