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

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

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

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

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

2回答

18654閲覧

マルチディスプレイで指定したディスプレイ上にFormを表示させたい。

fender0131

総合スコア121

C#

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

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2015/12/24 03:02

いつも大変お世話になっております。

マルチディスプレイ使用時の動作でお聞きしたいことがあります。

例えば、ディスプレイA・ディスプレイB があります。
以下のプログラムですと、

ディスプレイA に最大化された Form1 が表示され、ボタン1 をクリックすると、座標(100,100)の位置に、サイズ(800,800)の Form2 が表示されます。

この状態から少し操作を変えます。

ディスプレイA に最大化された Form1 をマウスで動かし、ディスプレイBに最大化し配置します。その状態で ボタン1 をクリックしますと、ディスプレイAの 座標(100,100)の位置に、サイズ(800,800)の Form2 が表示されてしまいます。

ディスプレイB を認識させ、ディスプレイBにForm2を配置するにはどうすればよろしいでしょうか?

ご指導ご鞭撻の程よろしくお願い致します。

● 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_1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int h; int w; private Button bt = new Button(); private void Form1_Load(object sender, EventArgs e) { SetControl(sender,e); //現在フォームが存在しているディスプレイの高さと幅を取得 //現在フォームが存在しているディスプレイを取得 System.Windows.Forms.Screen s = System.Windows.Forms.Screen.FromControl(this); //ディスプレイの高さと幅を取得 h = s.Bounds.Height; w = s.Bounds.Width; this.Location = new Point(0,0); this.Size = new Size(w, h); } private void SetControl(object sender, EventArgs e) { bt = new Button(); bt.Size = new Size(100, 100); bt.Location = new Point(200, 200); bt.Font = new Font("Arial", 16); bt.Text = "ボタン1"; bt.Click += new System.EventHandler(ButtonClick); this.Controls.Add(bt); } private void ButtonClick(object sender, EventArgs e) { Form2 fm = new Form2(); DialogResult drret = fm.ShowDialog(); } } }

● 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_1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { this.Location = new Point(100,100); this.Size = new Size(800, 800); } } }

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

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

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

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

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

guest

回答2

0

ベストアンサー

Form2を表示する際に、Form1から自身が表示されているディスプレイをパラメータとして渡して、そのディスプレイを基準にForm2の位置を決めてやればいいと思います。

private void Form2_Load(object sender, EventArgs e)
{ this.Location = new Point(100,100); this.Size = new Size(800, 800); }

だと、システムの基準のディスプレイにしか表示されないと思います。

投稿2015/12/24 05:29

KoichiSugiyama

総合スコア3041

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

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

fender0131

2016/01/05 06:49

お返事遅くなり大変申し訳ございませんでした。 思い通りの結果が得られませんでした・・・ もう一度調べ直してみます。 ありがとうございました。
guest

0

投稿2015/12/24 03:07

dojikko

総合スコア3939

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

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

fender0131

2015/12/24 04:02

お答えありがとうございます。 調べている際に、そのサイトを参考にプログラムを組んでいたのですが、 思い通りの結果が得られず、質問している次第でございます・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問