0

私はリストメンバーに変えて入力しようとしています。入力はクラスを介して受信され、文字列値に追加され、リストに追加されます。ただし、リストを機能させることはできません。

 public class Deliveries
{
    private string customername;

    public string CustName
    {
        get { return customername; }
        set { customername = value; }
    }
    private string customeraddress;

    public string CustAddress
    {
        get { return customeraddress; }
        set { customeraddress = value; }
    }
    public DateTime deliverytime;

    public DateTime DelTime
    {
        get { return deliverytime; }
        set { deliverytime = value; }
    }
    public string output;
    private void ToString()
    {
        output=deliverytime.ToString() + " " + CustName + " " + CustAddress;
    }
}

リストは、Lists という別のクラスに格納されます。

class Lists
{
    private List<Deliveries> deliveries = new List<Deliveries>();

    public void addDelivery(Deliveries del)
    {
        deliveries.Add(del);
    }


    public List<String> listDeliveries()
    {

        List<String> listDeliveries = new List<string>();

        foreach (Deliveries del in deliveries)
        {
            String delAsString = del.ToString();
            listDeliveries.Add(delAsString);
        }
        return listDeliveries;
    }


    public Deliveries getDelivery(int index)
    {

        int count = 0;
        foreach (Deliveries del in deliveries)
        {
            if (index == count)
                return del;
            count++;
        }
        return null;
    }

そして最後に、それをリストボックスに追加するコードは、フォーム ロードに保存されます。

 listBox1.Items.Clear();
        List<String> delList = ListOut.listDeliveries();
        listBox1.Items.AddRange(delList.ToArray());

現在、何も追加していません。どんな助けでも大歓迎です

4

1 に答える 1

0

リストボックスには、メソッドを介してすべてのオブジェクトから返された文字列が自動的に表示されますToString。したがって、Deliveriesクラスでこのメソッドをオーバーライドし、の実装を削除しますToString

public override string ToString()
{
    return String.Format("{0} {1} {2}", deliverytime, CustName, CustAddress);
}

これで、最初に文字列のリストに変換しなくても、配信をリストボックスに直接追加できます。


インデックスを介してリスト内の配信にアクセスでき、ループは必要ありません

public Deliveries getDelivery(int index)
{
    if (index < 0 || index >= deliveries.Count) {
        return null;
    }
    return deliveries[index];
}

問題を解決するには、デバッガーを使用してください。listDeliveries行の左側にある灰色の境界線をクリックして、メソッド本体の最初のコード行にブレークポイントを設定します。茶色の点が表示され、コードはこの行で一時停止します。変数の上にマウスポインタをdeliveries置くと、その内容を調べることができます。

于 2012-12-05T21:29:29.883 に答える