-1

これまでのところ私はそれをしましたが、特定の日付を取得する代わりに機能しません。すべてのリスト項目を消去してください助けてください

private void button1_Click_1(object sender, EventArgs e)
{
    List<RentalCar> listBox1snew = new List<RentalCar>();
    for (int i = 0; i < listBox1s.Count; i++)
    {
        if ((DateTime.Now.Day - listBox1s[i].WOF.Day) <= 7)
        {
            listBox1.Items.Insert(0, listBox1snew[i]);

        }
    }
    listBox1.DataSource = listBox1snew;//add car to listbox
}
4

4 に答える 4

1

まず、日付を確認するロジックは次のようになります。

DateTime.Now.Subtract(listBox1s[i].WOF).Days <= 7

ListBoxデータソースをlistBox1snewに設定していますが、listBox1snewに何も追加していません。

于 2013-01-20T10:02:49.880 に答える
1
listBox1.Items.Insert(0, listBox1snew[i]);

これは意味がありません。listBox1snewです。私はあなたが意味したと信じています。listBox1s[i]

listBox1.DataSource = listBox1snew;

これはさらに意味がありません。まず、アイテムを挿入しlistBox1.Items、次にをオーバーライドしてDataSource、実質的にを無視しItemsます。また、変更を加えていないためlistBox1snew空のままです。

私があなたが求めていると思うもの:

  • listBox1s要素をからにコピーしlistBox1snewます。
  • に設定DataSourcelistBox1snewます。

それは次のようになります:

private void button1_Click_1(object sender, EventArgs e)
{
    List<RentalCar> listBox1snew = new List<RentalCar>();
    for (int i = 0; i < listBox1s.Count; i++)
    {
        if (DateTime.Now.Subtract(listBox1s[i].WOF).Days <= 7)
        {
            // Copy from listBox1s to listBox1snew
            listBox1new.Add(listBox1s[i]);
        }
    }
    // Use listBox1new as new data source
    listBox1.DataSource = listBox1new;
}

また、このフィルターはLINQで簡単に表現できます。

private void button1_Click_1(object sender, EventArgs e)
{
    listBox1.DataSource = listBox1s.Where(x => DateTime.Now.Subtract(x.WOF).Days <= 7).ToList();
}
于 2013-01-20T10:05:46.843 に答える
0
DateTime.Now.AddDays(-7) <= listBox1s[i].WOF
于 2013-01-20T10:04:13.183 に答える
0

最初に2日を引いてから、日数の差を見つける必要があります。

private void button1_Click_1(object sender, EventArgs e)
    {
        List<RentalCar> listBox1snew = new List<RentalCar>();
        for (int i = 0; i < listBox1s.Count; i++)
        {
            if ((DateTime.Now - listBox1s[i].WOF).Days <= 7)
            {
                listBox1snew .Items.Insert(0, listBox1s[i]);

            }
        }
        listBox1.DataSource = listBox1snew;//add car to listbox
    }
于 2013-01-20T10:04:50.707 に答える