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

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

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

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

Q&A

解決済

1回答

3740閲覧

C# 勝手にフォームが閉じられてしまう

Reindeer_Csharp

総合スコア13

C#

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

0グッド

0クリップ

投稿2022/07/29 06:27

編集2022/07/29 06:53

前提

C#でメッセージダイアログを用いての選択肢(主にソフト終了するか、入力内容をリセットするかなど)でいいえを押すといいえにはプログラムを記入していないのに勝手に閉じられてしまう。
どう対処したらいいのかよくわからず困っています。
対処法や原因を知っている方いましたら教えてほしいです。

実現したいこと

  • 「いいえ」を押してもフォームが閉じられるのを防ぐ。

発生している問題

主に子フォームで起こっています。親フォーム(閉じるとアプリが終了するフォーム)はまだ観測してません。
親フォーム

C#

1 private void button1_Click(object sender, EventArgs e) 2 { 3 Form2 add = new Form2(); 4 add.ShowDialog(); 5 }

子フォーム

C#

1 private void button1_Click(object sender, EventArgs e) 2 { 3 DialogResult = MessageBox.Show("test", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 4 if (DialogResult == DialogResult.Yes) 5 { 6 //特に記入なし。 7 } 8 else 9 { 10 goto A;//閉じられてしまう。 11 } 12 A:; 13 }

静的フィールドなし。このイベント以外は作っていません。
いいえを押すとフォームが閉じられてしまう。
2022/07/29 15:41 追記 「はい」のプログラムに何も入力しなくても閉じられてしまう。
2022/07/29 15:52 追記 コードの追加

該当のソースコード

該当する箇所が多すぎるので発生している問題を参照してください。

試したこと

goto を使ってif文の終わりに設置したりしたら閉じられることはなかったけどやたら使うとコードが読みにくくなるのであまり使いたくない2022/07/29 15:41 追記 これも閉じられてしまう。

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

VisualStudio 2022

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

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

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

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

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

YAmaGNZ

2022/07/29 06:41 編集

提示されたソースをどこに書いているのですか? またDialogResultに格納して、diarogresultで比較していますがこれは正しいですか?
Reindeer_Csharp

2022/07/29 06:44

掲示されたソースはボタンクリックのイベントに使っています。 DialogResult>>>すみません。誤字なので修正します。
Zuishin

2022/07/29 06:44

DialogResult プロパティ自体にフォームをクローズする副作用があるので、dialogResult に変えれば良さそうです。
Reindeer_Csharp

2022/07/29 06:45

副作用>>>なるほど、試してみます。
dodox86

2022/07/29 06:47

「はい」だろうが「いいえ」だろうがプログラムの流れ、結果的にフォームをClose()しているのではないですか。周辺のコードを提示しましょう。質問文中に追記、修正のかたちで示してください。
Reindeer_Csharp

2022/07/29 06:48

dialogResultに変えましたがコーディング段階でエラーを吐いてしまいます。こちらはプロパティではなくintやstringなどの変数でしょうか?
Reindeer_Csharp

2022/07/29 06:49

追記修正>>>親フォームと同時に現在のコードを追記します。
dodox86

2022/07/29 06:50

あ、なるほど、DialogResultプロパティそのものでしたか。
Zuishin

2022/07/29 06:50

ローカル変数を宣言するんですよ。 var dialogResult = MessageBox.Show("選択肢", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
Reindeer_Csharp

2022/07/29 06:54

なるほど、ローカルですね。コーディングしてみます。
Reindeer_Csharp

2022/07/29 06:58

無事コーディングできました。ありがとうございます
guest

回答1

0

自己解決

Zuishin
2022/07/29 15:50

ローカル変数を宣言するんですよ。

C#

1var dialogResult = MessageBox.Show("選択肢", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 2if(dialogResult == DialogResult.Yes) 3{ 4//閉じられることはなくなった。 5}

この方の助言のもと、閉じられずに選択肢だけを閉じることに成功しました。ありがとうございます。

2022/07/30 8:44 追記
原因:いままでプロパティを使わないといけないのかと思ってしまった私の間違った認識でした。

投稿2022/07/29 06:58

編集2022/07/29 23:44
Reindeer_Csharp

総合スコア13

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

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

Reindeer_Csharp

2022/07/29 23:41

代入について>>> 選択肢にはDialogResultをつかうならDialogResultに格納したほうがいいのかなと思った私の間違った認識でした。 注釈>>> ページありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問