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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Windows Forms

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

.NET Framework

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

Q&A

解決済

1回答

1227閲覧

【C#】フォーム内にフォームを設置して、メインフォームのControlsからメインフォーム内のフォームをすべて取得したい

jumpaction

総合スコア12

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Windows Forms

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

.NET Framework

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

0グッド

0クリップ

投稿2020/04/27 02:27

【C#】フォーム内にフォームを設置して、メインフォームのControlsからメインフォーム内のフォームをすべて取得したい

タイトルのまんまです(3回目)
こちらを参考にし、フォーム内にフォームを設置しました。(2回目)
それで、メインフォームのControlsからメインフォーム内のフォームの一覧をforeachなどで取得したいのですが、
foreach(Control c in Controls)では、フォームは取得できなくて、
foreach(var c in Controls)では、フォームの取得はできますが、コントロール(フォーム以外)も取得してしまいます
foreach(var c in Controls)の方法で、コントロールがフォームかどうか判断する方法がわかりません。

コード

こちらから参考
サブフォーム(フォームに表示するフォーム)はScene.Testです
メインフォームはForm1です

cs

1 private void GetForm() 2 { 3 foreach(var c in Controls) 4 { 5 Console.WriteLine(c); 6 } 7 }

メインフォーム内にあるコードです

フレームワークなど

  • 開発ツール:VisualStudio 2019
  • アプリの種類:Windows Forms
  • OS:Windows10 Home
  • フレームワーク:.Net Framework

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

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

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

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

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

Zuishin

2020/04/27 02:33

前の質問を見ると、この方法はやめたはずです。私の書いた方法を使っているならそのように書いてください。
y_waiwai

2020/04/27 02:36

質問がいまいち意味不明です フォームを取得とは具体的にどうしたいんでしょうか。 #提示のコードが意味不明だし。。
jumpaction

2020/04/27 02:37

メインフォーム内のすべてのフォームを終了したいんです
jumpaction

2020/04/27 02:37

別のとこでこの方法を使うことにしました
Zuishin

2020/04/27 02:39

別のも同じもありません。私の書いた方法を使っているならそのように書いてください。どのようなことをしているのか不明です。
dodox86

2020/04/27 02:39

3回目とか2回目って、何でしょう。関連する質問の回数でしょうか。
jumpaction

2020/04/27 02:40

シーン移動で、ユーザーコントロールを使うというのをどこかのサイトで見て、 それをフォームでやってみたということです
jumpaction

2020/04/27 02:41

@dodox86 別の質問で同じことを書いていたということですw とくに「タイトルのまんまです」 はほとんどw
Zuishin

2020/04/27 02:42

別の方法を使っているなら一回目のはずです。日本語が難しいなら Stack Overflow へどうぞ。
Zuishin

2020/04/27 02:43

同じタイトルで違う方法を質問するというのがそもそも無茶苦茶です。
jumpaction

2020/04/27 02:54

違うタイトルです
guest

回答1

0

ベストアンサー

コントロールがフォームかどうか判断する方法

isとかじゃ判断できないという話なんでしょうか?

状況が良くわかりませんが,
「Controlsの要素のうちの特定の要素群だけに何か特別な措置を施したくて,しかしControlsからその要素群をより分けることに苦労している」とかいう話のであれば,
Controlsとは別に,当該要素群の参照を持っておけばよいのではないかと思うのですが.

投稿2020/04/27 03:03

fana

総合スコア11654

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

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

jumpaction

2020/04/27 03:05

コードが要素群1でどんどん増えていってしまうので、
jumpaction

2020/04/27 03:06

フォームにある全てのフォームを閉じたいです
fana

2020/04/27 03:08

意味がわからない. 一気に閉じたい子フォーム群の参照を List<Form> でも何でも適当な形に保持すれば foreachで終わる話なのではなくて?
jumpaction

2020/04/27 03:11

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問