|
■No88973 (わたー さん) に返信 > 「monthclendar」を使って、 …「MonthCalendar」コントロールの事でしょうか?
大文字小文字を含め、スペルミスに注意。
> 作成した「listview」の値が変わるというものです。 ListView に表示するのは、「お客さんの名前」の一覧なのですね。 話を単純化するため、ひとまず同姓同名などは考慮しないものとします。
> 例えば10月23日をクリックしたら、10月23日に予定が入っているお客さんの名前だけを出力したい。 > 10月24日をクリックしたら、23日のお客さんは表示せずに24日に予定が入っているお客さんの名前だけを出したい。
予約リスト(日付ごとのお客さんの名前の一覧)は、どのように管理する予定ですか?
たとえば、その予約リストを private Dictionary<DateTime, List<string>> reservation = new Dictionary<DateTime, List<string>>(); な変数で管理しているとしたら、こんな感じでどうでしょう。
// MonthCalendar コントロールの // MaxSelectionCount プロパティの設定次第では // 複数の日付が同時に選択されることもあり得る var selStart = monthCalendar1.SelectionStart.Date; var selEnd = monthCalendar1.SelectionEnd.Date;
// ListView の更新開始 listView1.BeginUpdate();
// 現在のリストをクリア listView1.Items.Clear();
for (DateTime day = selStart; day <= selEnd; day = day.AddDays(1.0)) { // 予定表に記載されているか? if (reservation.ContainsKey(day)) { foreach (string userName in reservation[day]) { listView1.Items.Add(userName); } } }
// ListView の更新終了 listView1.EndUpdate();
> また、お客さんの登録の仕方は、テキストボックスに名前を打ちこんで、 > 登録ボタンを押したらlistviewに追加されるというものです。
登録ボタンクリック時に
List<string> users = reservation.ContainsKey(day) ? reservation[day] : reservation[day] = new List<string>(); users.Add(textBox1.Text); listView1.Items.Add(textBox1.Text);
とか。
ここでは List<string> を使いましたが、ListView に特化するのなら、 List<ListViewItem> で管理するのも良いでしょう。
また、データベースなどを使うのなら、Dictionary<,> の代わりに DataSet で管理しておくのも手かと思います。
|