|
.NET FrameworkプログラミングTips
Windowsフォームアプリケーションにおいて、
MyDialogという名のフォームを作成し、
Form1からMyDialogをモーダルダイアログとして表示する。
その後、ダイアログからの戻り値を扱う。
最後に、プロパティを使って、MyDialogと呼び出し元との間でデータ交換を行う手法を取り上げる。
ダイアログの表示方法まず、Windowsフォームアプリケーションのプロジェクトを開始し、MyDialogという名のフォームを新規に追加する。 ここで、MyDialogをモーダルダイアログとして実行するためには、 Form1中のあるイベントハンドラで、 MyDialog* dialog=new MyDialog(); dialog->ShowDialog(this); と記述すればよい。 モーダルダイアログの結果通知方法まず、結果を通知する側(サーバ)の設定を行う。 MyDialogの持つDialogResultプロパティに値を書き込むと、 その値を戻り値としてダイアログは終了する仕組みになっている。 例えば、先ほど作成したMyDialogフォームに、 ボタンを二つ(botton1とbotton2)作成し、 botton1をクリックするとOKを返し、 botton2をクリックするとCancelを返すようにする場合、 次のように記述する。 botton1_Clickイベントハンドラ内で、 DialogResult=DialogResult::OK; botton2_Clickイベントハンドラ内で、 DialogResult=DialogResult::Cancel; ここで左辺のDialogResultがMyDialogのプロパティとしてのDialogResultである。 右辺のDialogResultはEnum列挙体であって、 Abort, Cancel, Ignore, No, None, OK, Retry, Yes がある。 次に結果を受信する側(クライアント)の記述である。 MyDialog::ShowDialogがDialogResult型の結果を返す。 すなわち、 MyDialog* dialog=new MyDialog();
int result=dialog->ShowDialog(this);
if(result==DialogResult::OK){
// OKの場合
}else{
// OKでない場合
}
のような記述となる。 もし、戻り値の種類が多いのであれば、switch文を使い、 MyDialog* dialog=new MyDialog();
switch(dialog->ShowDialog(this)){
case (DialogResult::Abort):
// Abortの場合
break;
case (DialogResult::Cancel):
// Cancelの場合
break;
・・・
}
などとする。 ダイアログとのデータ交換MyDialogにMyTextというプロパティを追加し、 このプロパティを通してデータ交換する。 MyDialogにテキストボックスtextBox1を設置し、 ここに表示される文字の設定、および取得をMyTextを使って行うには、 MyDialog内に次のように記述する。 public:
__property void set_MyText(String* str){
textBox1->Text=str;
}
__property String* get_MyText(){
return textBox1->Text;
}
これで、MyTextを通じてテキストボックスの文字の設定および取得が可能になる。 具体的には、クライアント側で次のように記述する。 MyDialog* dialog=new MyDialog();
dialog->MyText=S"Multisoft-lab";
if(dialog->ShowDialog(this)==DialogResult::OK){
MessageBox::Show(dialog->MyText);
}
|
|
Copyright © 2004-2006 Multisoft-lab All rights reserved. |