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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Windows Forms

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

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

1795閲覧

vb.net Windows Forms 1つのフォームからマルチディスプレイに表示させることは可能か

khkiyota

総合スコア2

Windows Forms

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

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/09/27 02:13

前提・実現したいこと

1つのフォームから、アプリケーション起動時に、3つの画面に表示させたいです。

3つの画面には、レイアウトは同じで、それぞれ違う数字が表示されます。

この場合、フォームは1つでも可能でしょうか。
それとも3つ作らないといけないのでしょうか。

詳細を記載せていただくと、
画面ごとにさらに3分割されており、分割毎にそれぞれ番号が振られています。
1画面→(1, 2, 3)2画面→(4, 5, 6)3画面→(7, 8, 9)といった具合です。

これを、各画面の最初の数字をコマンドライン引数で取得し、それぞれ同時に表示させるようにしたいです。

初心者のため、情報不足、意味不明な部分があれば教示いただけると幸いです。

何卒、よろしくお願い申し上げます。

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

OS:Windows 10 Pro
.Net Framework:4.5.2
Visual Studio:2015

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

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

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

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

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

YAmaGNZ

2021/09/27 02:18

「フォームが1つ」というのはインスタンスが1つということですか? それとも例えばMainFormというクラス1つで3つインスタンスを作って表示するということですか? どちらにしろ可能だとは思います。
khkiyota

2021/09/27 02:25

早速の解答ありがとうございます。 「MainFormというクラスが1つで3つインスタンスを作って表示する」の方です。 知識不足で大変恐縮なのですが、こういったところを調べてみたら、という参考情報などあればご教授いただければと思います。 何卒よろしくお願い申し上げます。
gentaro

2021/09/27 02:27

想定してるものがハッキリしないけど、「各画面の最初の数字をコマンドライン引数で取得し」って事は3つアプリケーションを起動する、というようにも読み取れるんで、第三者に伝わるように想定している詳細な仕様を質問文に書いてください。
YAmaGNZ

2021/09/27 02:40

「MainFormというクラスが1つで3つインスタンスを作って表示する」 ということであれば、起動するアプリケーションは1つとなりますが、 「各画面の最初の数字をコマンドライン引数で取得し」ということに 当てはまらないのではないでしょうか? また、以前の質問時に「2重起動ができないようにしている」とあったかと思いますが この理由についても考えなくてはならない可能性もあります。 例えば、シリアル通信で表示データを取得するためシリアルポートを1つのアプリで占有してしまう為に複数起動できない等制約があるとか、同時に動いても問題はないが複数立ち上がっても意味がないので抑制しているだけなのかなどあるかと思います。 もし複数起動出来ない理由があるのでしたら、アプリの構造についても「コマンドラインで表示内容を指定する」といった複数アプリを起動する方法が使えないということになるかもしれません。 表示画面についてはどうにでもなるので、アプリケーションの構造をしっかり考えたほうがいいかもしれません。
Zuishin

2021/09/27 02:46 編集

コマンドラインで 1 4 8 という値が得られた場合、一つ目のフォームに 1 を、二つ目のフォームに 4 を、三つ目のフォームに 8 を表示し、三つのフォームを表示する三種類の数値が得られなかった場合、強制終了するという意味ですか? 詳細を書くなら、他人に伝わるレベル(できればあなたの隣に住んでいる人に伝わるレベル)で書きましょう。 つまり、三つのフォームを表す三枚の紙を与えられて、あなたの一度の説明によって隣の人がその紙を操作できるレベルです。
退会済みユーザー

退会済みユーザー

2021/09/27 02:56 編集

二重起動していいなら、表示するディスプレイのインデックスも指定するようにして、EXE3つ起動してFormのLocationを表示させたいインデックスのディスプレイのとこに設定するだけでいいので楽ですね。 1プログラムで複数フォーム表示させるなら、質問する前に仕様をきちんと固めた方がよいでしょう。 (プログラムの終了条件とか、途中でディスプレイ増えたり外されたりしたらどうするのとか、ディスプレイは全部同じ解像度なのかとか)
khkiyota

2021/09/27 03:06

ご指摘いただいた皆さま方、誠にありがとうございます。 まず、自身がしっかりを何をしたいのかをはっきりとさせないまま、曖昧な質問をしてしまい、申し訳ございませんでした。 また、どのように質問したら良いかを懇切丁寧にご教授いただき、本当にありがとうございます。 今後、しっかりと説明できるレベルにまでまず自分が理解し、適切な回答をいただけるようにいたします。 今回頂いた情報を基に、まずは社内の担当者や責任者に質問します。 改めて貴重なお時間を割いてまで対応していただきありがとうございました。
guest

回答1

0

ベストアンサー

この場合、フォームは1つでも可能でしょうか。
それとも3つ作らないといけないのでしょうか。

「作る」の指している対象が不明なのでこれだけでは回答不能だが、

コメント欄より

「MainFormというクラスが1つで3つインスタンスを作って表示する」の方です。

について言えば、インスタンスを3つ作って表示することは「可能」という回答でおしまい。
むしろどこで悩むのか不明なレベルだけど、これに各画面に外から別々のデータを与えて表示すればいいだけ。

てか、仕事なら上司や同僚、教育担当者に相談したら良くない?

投稿2021/09/27 02:36

gentaro

総合スコア8947

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

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

gentaro

2021/09/27 02:38

「可能か」って質問だとこの回答にしかなり得ないんで、ここがもし理解できてる上で何か質問したいということなら、もうちょっと質問内容をちゃんとまとめた方が良い。
khkiyota

2021/09/27 02:50

ご回答ありがとうございます。 また、質問内容に関して丁寧に教えていただきありがとうございます。 曖昧な理解で質問してしまいました。 自分自身が何をしたいのか、説明できるレベルまで調べて質問するようにします。 改めて色々と教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問