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

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

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

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

Visual Studio

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

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

Q&A

解決済

1回答

5327閲覧

InitializeComponent()メソッドで例外が発生するようになった(WindowsFormアプリ)

COBO

総合スコア5

C#

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

Visual Studio

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

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

0グッド

0クリップ

投稿2019/10/18 06:28

編集2019/10/18 07:20

Visual Studio 2019でWindowsFormアプリを作っているのですが、
なぜか突然InitializeComponent()メソッドで例外が発生し、
アプリを起動できません。
昨日まではこのような例外は起こらず、何の問題もなくビルドができました。

イメージ説明

下のコードがSystem.Reflection.TargetInvocationExceptionの原因ですが、
理由が全く分かりません。

C#

1this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

フォームに設定したアイコンがおかしいということでしょうか。

そして、当該行をコメントアウトすると、今度は下のコードで
System.StackOverflowExceptionが発生しました。

C#

1this.panel1.Controls.Add(this.label2);

イメージ説明

Visual Studioの再起動も行いましたが直りませんでした。
なぜ例外が起きるか全くわかりません。
ご回答お願いします。

Visual Studioでアプリ開発を始めて2か月程度の初心者です。

追記
呼び出し履歴をみると、InitializeComponent()は
一度しか呼ばれていませんが、

~Form1.Form1()行20
~ReadText.ReadText()行235

が何度も交互に表示されています。
イメージ説明
~Form1.Form1()行20は

C#

1ReadText retex = new ReadText();

~ReadText.ReadText()行235は

C#

1Form1 form1 = new Form1();

です。
ここに問題があるのでしょうか。

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

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

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

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

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

takabosoft

2019/10/18 06:40

stackoverflowが出ている時に右下の「呼び出し履歴」ペインで、呼び出し履歴を確認してみてください。 何度も再帰的に同じInitializeComponent()が呼ばれていないか一応確認してみてください。 (たぶん無いと思いますが一応)
takabosoft

2019/10/18 07:52

> ここに問題があるのでしょうか。 そこに問題があります。 ReadTextは何をやるクラスなんでしょうか?
guest

回答1

0

ベストアンサー

Form1.Form1()はForm1が生成された時に実行されます。
その中で

C#

1ReadText retex = new ReadText();

とReadTextを生成しています。
このReadTextを生成した時に実行されるところで

C#

1Form1 form1 = new Form1();

とForm1を新たに生成しています。
この為、またForm1.Form1()が実行され、その中でReadTextが生成されてForm1が生成され・・・・と延々と繰り返されています。

ReadText側のForm1の生成が本当に必要なのか検討してください。

投稿2019/10/18 07:28

YAmaGNZ

総合スコア10242

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

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

COBO

2019/10/18 07:59

Form1 form1 = new Form1();でForm1を生成するとForm1.Form1()を実行することを知りませんでした。 form1.Form1()と書いて初めてそれが実行されるものだと思っていました。 C#をもっと勉強しないといけませんね。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問