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

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

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

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

Visual Studio 2013

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

Q&A

解決済

1回答

2725閲覧

Form内のbutton・pictureboxの位置を更新(再配置)したいのですが・・・

fender0131

総合スコア121

C#

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

Visual Studio 2013

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

0グッド

0クリップ

投稿2015/12/04 08:16

編集2015/12/04 08:22

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

テスト環境として、2台のディスプレイがあります。

ディスプレイA(1980x1080)、ディスプレイB(1280x1024)

ディスプレイの解像度を取得し、それに合わせてフォームを作成し、button・picturebox(コントロール)を配置しております。

「 ディスプレイA 」で配置したフォームを「 ディスプレイB 」に移した際、フォーム内のコントロール位置を更新したいのですが、
何かいい方法など御座いますでしょうか?

現在は、「 SizeChanged 」でディスプレイの移り変わりを検知し、以下のような流れでフォームを更新しております。

private void Kihon_fm_SizeChanged(object sender, EventArgs e)

{

if (this.WindowState == FormWindowState.Minimized)

{

}

else if (this.WindowState == FormWindowState.Maximized)

{

Kihon_fm_Load(sender,e); // ※ 始めに現在フォームが存在しているディスプレイの高さと幅を取得 // int h = System.Windows.Forms.Screen.GetBounds(this).Height; // int w = System.Windows.Forms.Screen.GetBounds(this).Width; // ※ 上のh・wを基準に、button・pictureboxが配置しています。 // ※ この方法だとボタンが2重に配置されてしまっていました。

}

}

お忙しいところ恐縮ですが、どなた様かご指導ご鞭撻頂けないでしょうか?。

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

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

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

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

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

Chironian

2015/12/04 08:22

最近、teratailが仕様変更されたどうも使いにくくなってます。 コードを書く時、編集欄の上の方にある「B I A ◯ □ " </>」の</>を押して出てくる```と```の間に書くと、綺麗に改行されますよ。
fender0131

2015/12/04 08:25 編集

お答えありがとうございます。 無理やり改行して見やすくはさせて頂きました。 プログラムソースの書き方を教えてくださいましてありがとうございます。
guest

回答1

0

ベストアンサー

こんにちは。

よほど凝った要件でなければコントロールのDockとAnchor、そしてFlowLayoutPanelなどを組み合わせることで位置調整は十分です。

それらで不足しているようであれば、NGの理由と再配置の要件をもっと明確にしてください。

投稿2015/12/04 08:25

Tak1wa

総合スコア4791

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

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

fender0131

2015/12/04 09:14 編集

こんばんは。 すいません。質問内容がごちゃごちゃになってしまってますね。 フォームの更新のさせ方が分からないので更新方法があるか知りたいのです。 pictureboxですと、PictureBox1.Invalidate();で再描画されると思うのですが、 これをPictureboxでなく、Formで対象がコントロールとして再配置したいのです。 今ですと、無理有り「SizeChanged(object sender, EventArgs e)」でイベントを起こし、Formを設定している「Kihon_fm_Load(sender,e);」にアクセスしている状態です。 これですと、ディスプレイAの時のボタン配置とディスプレイBの時のボタン配置が表示されてしまうので、再配置という形にして、ダブらないようにしたいのです。
Tak1wa

2015/12/04 09:25

Kihon_fm_Loadの内容によります。各コントロールのLocationの変更だけ行えばダブらないはずですが、別のインスタンスを作成してしまっているのではないですか? コントロールの作成とAddは通常どおりInitializeComponentで行い、その後Form_Loadで作成済みインスタンスのLocation変更を行ってみてください。
fender0131

2015/12/04 09:56

なるほど! 確かにLocationのみ変更すれば行けそうですね。 頭が固くなりすぎてました・・・ 貴重なご意見ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問