![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
No.3ベストアンサー
- 回答日時:
Public int buf = 0;の下ですね。
mouse_clicked()の中で宣言してしまうと、そのサブルーチン終了とともに
f2が破棄されてしまい、Form2のインスタンスは有るけど、それを管理出来なく
なります。
これではクリックした時に既にForm2が有るのか無いのかわからなくなるので、
サブルーチンの外で宣言しないといけません。
私の書いたNo.2は不要みたいなので、public Form2 f2 = null;を追加すれば、
動くとおもいますよ。
No.2
- 回答日時:
割り込みで失礼します。
私も良く#1さんの示す処理を使います。
まず、#1さんの文章をよく読んでください。変数定義とif()以降は書く位置が違いますよね?
貴方のコードで言う所の"Form2 f2"は、子フォームの生成するイベント(ボタン?)に
書くのではなく、親のメンバ変数を定義する場所に書きます。
そして、f2=nullは、親フォームの初期化を行う所に書きます。
子フォームを生成するイベントに、if()以降を書くのです。
また、子フォームの生成はelseルートではなく、if()の結果に関係なく生成する必要が
あります。
纏めると…
1.親フォームのメンバ変数を定義する場所に書く
Form2 f2;
2.親フォームの初期化処理に書く
f2 = null;
3.子フォームを作るイベント処理に書く
if( f2 != null ) f2.Close();
f2 = new Form2( this );
f2.Show();
1の定義で、Form2 f2 = null;と書けるならば、2は不要。
このコードの肝は3で、f2がnullかそうでないかによって、f2.Close()を呼ぶのか、
呼ばなくて良いのかを決めているところです。
初回動作時はf2=nullなので呼ばない、二回目以降は前回動作時に生成したフォームが
f2に入ったままなので閉じてからフォームを生成する、と動くのです。
このコードを正しく動かすには、f2がnullから始まる必要があるので、親の初期化
でnullをいれなければなりません。
#1さんが言いたいことは、この様な内容だと、私は解釈しています。
割り込み失礼しました。
この回答への補足
unacvoさん
ご回答ありがとうございます.
私も,おっしゃっていることは良く解りますが,
1.2の内容は具体的にどのあたりに記入知るのでしょうか?
ご教示よろしくお願いいたします.
下記にプログラムの関係部を張り付けておきます
public int but = 0;
private void mybutton1_Click(object sender, EventArgs e)
{
//Form2クラスの宣言
Form2 f2 = null;
//Form2を表示する
//ここではモーダルダイアログボックスとして表示する
////オーナーウィンドウにthisを指定する
//f.ShowDialog(this);
//フォームが必要なくなったところで、Disposeを呼び出す
//Form2クラスのインスタンスを作成する
if (f2 != null) f2.Close();
f2 = new Form2(this);
f2.Show();
}
No.1
- 回答日時:
子Formのクラス名がChirdFormだとすると,
ChirdForm cf = null;
と親フォームの中で宣言しておいて,
子formを出す処理のところで,
if ( cf != null ) cf.Close();
cf = new ChirdForm();
cf.Show();
って感じでは,ダメですか.
ちゃんと,構文確認してないので,メソッド名など誤っているかもしれませんが,
考え方としては,伝わりますか?
この回答への補足
toro-nekomataさん
ご回答ありがとうございます.
//Form2クラスの宣言
Form2 f2 = null;
if (f2 != null)
{
f2.Close();
}
else
{
//Form2クラスのインスタンスを作成する
f2 = new Form2(this);
f2.Show();
}
教えて頂いたように上記のようにしてみましたが,うまくいきませんでした.
どこがいけないのでしょうか?
ご教授よろしくお願いいたします.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
クリックするたびに、フォームが複数表示される
Visual Basic(VBA)
-
フォームの存在をチェックする方法
Visual Basic(VBA)
-
-
4
特定のフォームが開いているか確認したい。
Visual Basic(VBA)
-
5
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
6
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
7
Formの表示状態の取得
Visual Basic(VBA)
-
8
DateTimePickerでに年月までしか選択できないようにしたいです。
Visual Basic(VBA)
-
9
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
10
フォームの二重起動の阻止
Visual Basic(VBA)
-
11
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
12
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
13
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
14
C#のループでtextboxに値を入れる方法
C言語・C++・C#
-
15
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
16
C# ListBoxのアイテムをユーザーが直接リネームできるようにすることは可能ですか?
C言語・C++・C#
-
17
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
-
18
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
VBA(エクセル)のユーザー...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
MSGBOXのフォント大きさ変更
-
モーダルフォームとモードレス...
-
フォームの位置を取得したい
-
ACCESSのフォーム、開くんです...
-
VBA ユーザーフォームを速く開...
-
マウスの右クリックでコンテキ...
-
Access-VBAのPublic変数につい...
-
EXCEL VBA ユーザーフォームの...
-
ACCESS VBA ウィンドウを閉じる
-
エクセルVBA フォーム上でOnkey...
-
既定のビューを分割フォームに...
-
C#でフォームアプリケーション...
-
(Excel+VBA)ユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
指定の動作中ユーザーフォーム...
-
Form_Load と Form_Activate の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
VBAでユーザーフォームを再表示...
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
クリックイベントなのに、2回ク...
-
エクセルVBAのフォームを最...
-
モーダルフォームとモードレス...
-
フォームウィンドウを最前面に...
-
ユーザーフォーム上に現在日時...
-
ACCESSのフォーム、開くんです...
-
Hideについて(.NET)
-
Form_Load と Form_Activate の...
-
VBA(エクセル)のユーザー...
-
Accessで、一つのフォーム画面...
-
Excel VBA ユーザーフォーム 複...
-
VB.NETでフォームロード中のエ...
-
コントロールの存在確認
-
フォームを画面のど真ん中に表...
-
(Excel+VBA)ユーザーフォームの...
おすすめ情報