C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C#でClosedイベント時に、他フォームを操作したい


(過去ログ 15 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■5502 / inTopicNo.1)  C#でClosedイベント時に、他フォームを操作したい
  
□投稿者/ yusuke641 (1回)-(2007/07/16(Mon) 11:14:28)

分類:[C#] 

はじめまして。
ご質問させていただきます。

現在、visual C# 2005 Express Edition にて Windowsアプリケーションを作成しております。

Form1 と Option という2つのフォームがありまして、
Form1 の あるボタンを押すと、Optionフォームが開く仕組みになっています。

Form1 にはComboBox1があります。

Optionフォームが閉じたら、Form1のComboBox1の内容をクリアしたいのです。


Optionフォームのクラス内では、
private void Option_Closed(object sender, EventArgs e)
{
Form1 f = new Form1();
f.ComboBox1.Items.Clear();
MessageBox.Show("Option Closed");
}

のようにしています。

Option Closed のメッセージボックスはちゃんと表示されます。
しかし、Form1のComboBox1はクリアされていません。。。。

(ちなみに、Form1のComboBox1はpublicにはしてあります)

何か足りない部分がありますでしょうか。
ご教授願います。
引用返信 編集キー/
■5503 / inTopicNo.2)  Re[1]: C#でClosedイベント時に、他フォームを操作したい
□投稿者/ よねKEN (53回)-(2007/07/16(Mon) 11:33:00)
よねKEN さんの Web サイト
> Option Closed のメッセージボックスはちゃんと表示されます。
> しかし、Form1のComboBox1はクリアされていません。。。。

yusuke641さんがプログラミングしたフローを追うと以下のような感じです。

 Form1が表示されている
  ↓
 (Optionフォームを表示)
  ↓
 Optionが表示された
  ↓
 (新しいForm1を作成)
  ↓
 (新しいForm1のComboBox1をクリア)
  ↓
 Optionが閉じられた

新しいフォームに何の操作をしても元のForm1には変化はありませんね。

いくつかの対応策はありますが、
Optionフォームの表示にShowメソッドでなくShowDialogメソッドを使うというのはどうでしょうか?

ShowDialogメソッドを使った場合、呼び出し先フォーム(Option)が閉じられるまで、
呼び出し元(Form1)ソースは、ShowDialogメソッドの箇所で待ち状態になります。
つまり、呼び出し先フォーム(Option)が閉じられたら、
ShowDialogメソッドの次の行が実行されますので、そこでComboBox1のクリアをするという方法です。
引用返信 編集キー/
■5504 / inTopicNo.3)  Re[2]: C#でClosedイベント時に、他フォームを操作したい
□投稿者/ yusuke641 (2回)-(2007/07/16(Mon) 11:48:04)
No5503 (よねKEN さん) に返信
>>Option Closed のメッセージボックスはちゃんと表示されます。
>>しかし、Form1のComboBox1はクリアされていません。。。。
>
> yusuke641さんがプログラミングしたフローを追うと以下のような感じです。
>
>  Form1が表示されている
>   ↓
>  (Optionフォームを表示)
>   ↓
>  Optionが表示された
>   ↓
>  (新しいForm1を作成)
>   ↓
>  (新しいForm1のComboBox1をクリア)
>   ↓
>  Optionが閉じられた
>
> 新しいフォームに何の操作をしても元のForm1には変化はありませんね。
>
> いくつかの対応策はありますが、
> Optionフォームの表示にShowメソッドでなくShowDialogメソッドを使うというのはどうでしょうか?
>
> ShowDialogメソッドを使った場合、呼び出し先フォーム(Option)が閉じられるまで、
> 呼び出し元(Form1)ソースは、ShowDialogメソッドの箇所で待ち状態になります。
> つまり、呼び出し先フォーム(Option)が閉じられたら、
> ShowDialogメソッドの次の行が実行されますので、そこでComboBox1のクリアをするという方法です。

よねKEN さん

早速の回答ありがとうございます!!!

そして、教えていただいたとおり、
showDialogを使ったところ
理想の処理ができるようになりました。
本当に感謝しております。

お世話になりました。
ありがとうございます。
引用返信 編集キー/
■5505 / inTopicNo.4)  Re[3]: C#でClosedイベント時に、他フォームを操作したい
□投稿者/ 倉田 有大 (53回)-(2007/07/16(Mon) 15:06:43)
解決したようですねおめでとうございます。
かわりに解決済みクリック^^

Form1 f = new Form1();
あー、昔、オブジェクトのインスタンスがわからなかったとき、私もよくやりましたね〜^^;
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -