2011-01-28 8 views
0

日付が必要な機能が実行されるC#アプリケーションがあります。元の仕様では、現在の日付を常に使用できると言われていましたが、今ではユーザーがオンデマンドで日付を変更できるようにする必要があります。C#の日付ピッカーを使用したモーダルウィンドウの作成

問題は、この操作がバックグラウンドで完全に実行されることです。プロセスを開始するためにユーザーがクリックするメニュー項目のみがあります。だから私は、ユーザーがメニュー項目をクリックすると、使用する日付をユーザーに尋ね、入力された日付を返すモーダルウィンドウを追加したかったのです。私はこれを行う方法を見つけることができませんでした。

1つのアイテムしか持たないフォーム(DatePicker)を作成し、それをモーダルウィンドウのようにデザインする必要がありますか?または、まさにこれを行う既存のモーダルウィンドウクラスがありますか?

答えて

2

フレームワークにモーダルウィンドウが組み込まれているとは思いません。

新しいウィンドウフォームを作成する必要があります。それに日記を書く。その修飾子を公開すると、このような何かを:

private void MenuItemClick(objec sender, EventArgs e) 
{ 
    var userEnteredDate = DateTime.MinValue; 
    FormWithDate fmNewFormWithDateOnIt = new FormWithDate(); 
    fmNewFormWithDateOnIt.ShowDialog(); 
    userEnteredDate = fmNewFormWithDateOnIt.dtTimePickerOnForm.Value; 
    fmNewFormWithDateOnIt.Dispose() 

    //Do your thing 
} 

UPDATE:あなたは、フォーム上のボタンを配置し、OK =そのDialogResultを設定し、次の行うことができます:

if (fmNewFormWithDateOnIt.ShowDialog() == DialogResult.OK) //Not clicked the red close button on the form 
{ 
     userEnteredDate = fmNewFormWithDateOnIt.dtTimePickerOnForm.Value; 
} 
+0

しかし、どのように行うの私は、ユーザーが日付を変更したかどうかを知っています - これは、フォームがロードされたときに値を取得し、ユーザーが大丈夫になるのを待つのではないようです... – Elie

+0

これはうまくいくはずです。このアプローチには何の問題もありませんでした。私はいつもDispose()の代わりにClose()を呼び出すので、おそらくあなたの方が良いでしょう。おっとっと! – Dave

+0

@Elie 'Show()'と 'ShowDialog()'があります。 'ShowDialog()'はウィンドウをモーダルで表示します。 – Dave

関連する問題