実現したいこと
クラスライブラリでも、コンソールアプリケーションでもなく、
Windowsアプリケーションで、ターゲットフレームワークは.NET 9.0で
ターゲットOSはWindows で、エラーや数値を確認したいため、ウィンドウを出したい。
MessageBox.Show("数値","確認,MessageBoxButtons.OK,")を使えない理由を知りたい。
- 以上のアプリケーションの設定でMessageBoxを動作するようにする
追記
コンソールにも情報は小出しで出せている。
デザインFormにあるグループボックスが表示されない事に違和感を感じ、
ビルドした時に確認してみると全く表示されないので、MessageBoxを出そうとするも出ない。
あとは、以上の構成条件でHit&Blowというゲームを作っている。
発生している問題・エラーメッセージ
エラーはないですが、表示されません。
該当のソースコード
C#
1using System.Diagnostics; 2using System.Windows.Forms; 3 4namespace HitAndBlow 5{ 6 public partial class TopForm : Form 7 { 8 9 public static HistoryItem usedVariable = new HistoryItem(); //処理を書くためのクラスの変数 10 11 public TopForm() 12 { 13 InitializeComponent(); 14 15 /* //クライアントサイズの変更 16 Debug.WriteLine(ClientSize); //クライアントサイズをコンソールに表示する 17 ClientSize = new Size(800, 600); //クライアントのサイズを変える。 18 Debug.WriteLine(ClientSize+" \n "+this.Size); //クライアントサイズをコンソールに再表示 19 */ 20 21 //メッセージボックスを表示する 22 MessageBox.Show("正しい値を入力してください。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); 23 24 } 25 } 26}
試したこと
メッセージボックスの作成、バージョン確認。
ソースの提供
補足情報(FW/ツールのバージョンなど)
あとで皆様からご指摘があると感じるので、その時に足りない情報を出します。VisualStudioでプログラムをしております。
MessageBox.Show()が提示のコードにありません。
どこに記載しましたか?
というか
> あとで皆様からご指摘があると感じるので、その時に足りない情報を出します。
というのは問題なのではないかと(一々確認しないといけないので)。
以下のページを確認して、最低限必要そうな内容は初めから記載すべきです。
https://teratail.com/help/question-tips
すみません。アイテムを置いて、アイテムと紐づけてフォームに書いていたのですがソースを間違えてしまっていました。訂正いたします。
結構心に来る意見をおっしゃられる方が多いので先に言っておきたかったのです。大変失礼いたしました。
言いたいのなら落書きになると思ってました。
「Windows フォーム アプリ」の新規プロジェクトを作成し、自動生成されるフォーム(Form1.cs)でMessageBox.Show()を同様のコードで実行しても問題なく動作しました。
また、グループボックスも普通に配置できました。
原因は分かりませんが、とりあえず新規プロジェクトでMessageBox.Show()が動作するかどうかを確認してみてください。
同じ場所に↓と書いて、hogeは確認できるがfugaが出ないという意味ですか?(普通は考えずらいですね...
Debug.WriteLine("hoge");
MessageBox.Show("fuga");
どちらも出ないということなら、単にそこが呼ばれていないのでしょう。
例えば↓ならusedVariableにアクセスするまで出ないです。
public class HistoryItem
{
public HistoryItem()
{
Debug.WriteLine("hoge");
MessageBox.Show("fuga");
}
}
私も考えずらいのですが、なぜかメッセージボックスがでないので、本当に悩んでおります。
```C#
public partial class TopForm : Form
{
public partial class TopForm : Form
{
public TopForm()
{
Debug.WriteLine("hoge");
MessageBox.Show("fuga");
}
}
}
namespace HitAndBlow
{
public class HistoryItem
{
public VariableStorageClass variableStorages = new VariableStorageClass();
public ProcessClass processes = new ProcessClass();
public HistoryItem() //コンストラクタ
{
processes.InitializationFunction(variableStorages);
Debug.WriteLine("hoge");
MessageBox.Show("fuga");
}
}
}
```
この状態でも、WriteLineもMessageBoxもできませんでした。
プロジェクトの設定が悪いのでしょうか。
```C#
namespace HitAndBlow
{
public partial class TopForm : Form
{
}
}
```
先ほどのコメント、誤字があるので軽く修正させていただきます。
>WriteLineもMessageBoxもできませんでした
WriteLineも出ないということは「メッセージボックスがでない」という症状ではなく「その部分が実行されていない」と思われます。
そうなると実行時にはTopForm自体が生成されておらず他のFormが表示されている可能性が考えられます。もし他のフォームがあるのであればそちらにもメッセージボックスを表示するようなコードを書いてみてはどうでしょうか?
他にフォームがないのであればここに書いていない部分で実行にかかわる重要な部分を変更してしまったのではないかと思います。
こういった場合どこを触ったのかを覚えていることは稀ですのでプロジェクト自体を最初から作り直したほうが早く解決するのではないかと思います。
コメントありがとうございます。プロジェクトを新しく作り修正したのですが、解決いたしました。
ただ、原因がわからないため、ベストアンサーは無しで自己解決したことにいたします。
ここまでいろいろ考えてくださった皆様ありがとうございます。
また、何か問題が起きたらここに書かせてください。
本当にありがとうございました。
回答1件
あなたの回答
tips
プレビュー

