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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
クリックするたびに、フォームが複数表示される
Visual Basic(VBA)
-
フォームの二重起動の阻止
Visual Basic(VBA)
-
-
4
CloseとDisposeの違い
Visual Basic(VBA)
-
5
同じソリューション内の別のプロジェクトのメソッド呼び出し
C言語・C++・C#
-
6
【C#】別フォームも同時に閉じるには?
C言語・C++・C#
-
7
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
8
ボタンクリックイベント 重複防止について
C言語・C++・C#
-
9
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
10
C#で複数列をもつデータソースとするコンボボックスの使い方
C言語・C++・C#
-
11
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
12
【C#/Java?】try-catchでcatchせずにfinallyは一般的?
その他(プログラミング・Web制作)
-
13
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
14
C#で年月を比較する
C言語・C++・C#
-
15
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
16
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
17
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
18
C#でbyte配列から画像を表示させたい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォーム上に現在日時...
-
エクセルVBAのフォームを最...
-
ACCESSでストップウォッチの作成
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
ユーザーフォームのテキストボ...
-
フォームウィンドウを最前面に...
-
ブックをCloseまたはQuitで閉じ...
-
クリックイベントなのに、2回ク...
-
MSGBOXのフォント大きさ変更
-
C#で起動時のフォームを非表示...
-
ACCESSのフォーム、開くんです...
-
フォームの位置を取得したい
-
ユーザーフォームのラベルに時...
-
VB.NET/PictureBoxのサイズ
-
Excel VBAで別のブックからユ...
-
VBE ユーザーフォーム重複・空...
-
フォームを画面の下側ぴったり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
クリックイベントなのに、2回ク...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォーム上に現在日時...
-
Form_Load と Form_Activate の...
-
モーダルフォームとモードレス...
-
Excelにて、ユーザーフォームで...
-
VBAでユーザーフォームを再表示...
-
【VBAユーザーフォームで閉じる...
-
MSGBOXのフォント大きさ変更
-
VBA(エクセル)のユーザー...
-
Hideについて(.NET)
-
エクセルVBAのフォームを最...
-
コントロールの存在確認
-
ACCESSのフォーム、開くんです...
-
'ユーザーフォーム右上隅の[×...
-
フォームウィンドウを最前面に...
-
ユーザーフォームのラベルに時...
おすすめ情報