| 
                ■No88978 (わたー さん) に返信 > その後、このlistviewに入ったデータを「UserData」みたいな名前の一つのデータとして扱うことはできますか? > UserDataを代入すればデータがまるまる復旧するようなことができるか  です。
  丸ごと渡したいなら、 No88982 の案でどうでしょう。
 
  ※ C# 7.x + .NET Framework 4.7.x で動作確認
  // 予約情報 public class UserData : ListViewItem {   public DateTime Schedule { get; }   public DateTime Date { get => Schedule.Date; }   public string TimeText { get => Schedule.ToString(@"HH\時mm\分"); }   public string UserName { get; set; }   public string Gender { get; set; }
    public UserData(DateTime schedule, string userName, string gender)   {     (Schedule, UserName, Gender) = (schedule, userName, gender);     Text = TimeText;     SubItems.Add(userName).Name = "名前";     SubItems.Add(gender).Name = "性別";   } }
 
  // 予約の一覧 private List<UserData> list = new List<UserData>();
  // ListView を更新 private DateTime selectedDay; private void RefreshView(DateTime newDay) {   selectedDay = newDay;   listView1.BeginUpdate();   listView1.Items.Clear();
    // UserData は ListViewItem を継承しているので、   // List<UserData> を LINQ で配列に抽出すれば、そのまま AddRange に渡せる   listView1.Items.AddRange(list.Where(v => v.Date == selectedDay).ToArray());
    listView1.EndUpdate(); }
  private void Form1_Load(object sender, EventArgs e) {   listView1.View = View.Details;   listView1.FullRowSelect = true;   listView1.MultiSelect = false;   listView1.Columns.Clear();   listView1.Columns.Add("時刻");   listView1.Columns.Add("名前");   listView1.Columns.Add("性別");
    list.Add(new UserData(new DateTime(2018, 10, 23, 14, 0, 0), "田中太郎", "男"));   list.Add(new UserData(new DateTime(2018, 10, 23, 15, 0, 0), "わたー", "n/a"));   list.Add(new UserData(new DateTime(2018, 10, 30, 15, 0, 0), "鈴木一郎", "男"));   list.Add(new UserData(new DateTime(2018, 10, 30, 16, 0, 0), "田中太郎", "男"));
    RefreshView(new DateTime(2018, 10, 23)); }
  private void listView1_SelectedIndexChanged(object sender, EventArgs e) {   var items = listView1.SelectedItems;   if (items.Count == 0)   {     label1.Text = "";     label2.Text = "";   }   else   {     // 選択行の情報は、ListViewItem からそのまま取り出しても良いし     var listItem = items[0];     label1.Text = listItem.Text + ";" + listItem.SubItems["名前"].Text + ";" + listItem.SubItems["性別"].Text;
      // UserData にキャストしてから扱うこともできる     var userData = (UserData)listItem;     label2.Text = userData.TimeText + ";" + userData.UserName + ";" + userData.Gender;   } }
  |