2012-04-24 24 views
1

私は、Tripのグループからデータを選択して、そのTripの一部として見つかったすべてのアイテムをリストボックスに入れるプログラムを作っています。リストボックスから項目を選択すると、各項目を編集できる一連のテキストボックスが表示されます。リストボックスから文字列を区切る文字列をキャスト

私の問題のコードは、フォーム内にあるのはここ(tripChooseは、コンボボックスとlistExpensesは、リストボックスである)です。

private void tripChoose_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    IEnumerable<TripExpense> selectedExpenses = roster.ToFind((string)tripChoose.SelectedItem); 
    foreach (TripExpense item in selectedExpenses) 
     listExpenses.Items.Add(item); 
} 

private void listExpenses_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    specificExpenses = (TripExpense)roster.TripFind((string)listExpenses.SelectedItem); 
    tripTextBox.Text = specificExpenses.Trip; 
    tripTextBox.Enabled = false; 
    descriptionTextBox.Text = specificExpenses.Description; 
    amountTextBox.Text = specificExpenses.Amount.ToString(); 
    paymentMethodTextBox.Text = specificExpenses.PaymentMethod; 
    dateExpenseTimePicker.Value = specificExpenses.Date; 
    dateExpenseTimePicker.Enabled = true; 
    noteTextBox.Text = specificExpenses.Note; 
} 

JITデバッガは、私が暗黙的にオブジェクトを文字列に変換することを知ることができます

private void tripChoose_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    IEnumerable<TripExpense> selectedExpenses = roster.ToFind((string)tripChoose.SelectedItem); 
    foreach (TripExpense item in selectedExpenses) 
    listExpenses.Items.Add(item.ToString()); 
} 

私は、オブジェクトREFEREことを私に言ってエラーが出るように私は、そこに右のトラックにだと思う:私はこのように、ToStringメソッドを使用して試してみた

nceはオブジェクトのインスタンスに設定されていません。

答えて

1

TripExpenseToString()メソッドの実装が問題だと思います。あなたはそれの文字列を使用してFindTripにそれをフィードするとき、それはもはやそれを見つけることができません。

は何あなたが代わりに行うことができますすることはコンボ項目のあなたの元の設定を持って変更することですSelectedIndexChanged代わり

private void tripChoose_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    IEnumerable<TripExpense> selectedExpenses = roster.ToFind((string)tripChoose.SelectedItem); 
    foreach (TripExpense item in selectedExpenses) 
     listExpenses.Items.Add(item); 
} 

private void listExpenses_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    specificExpenses = (TripExpense)listExpenses.SelectedItem; 
    ... 
} 

コンボボックスのテキストは、まだTripExpenseオブジェクトのToString()をつかむだろうが、あなたはまだになります。この方法SelectedItemから実際のオブジェクトを取得してオブジェクトを再クエリーするのではなく、再生することができます。

+0

あなたは男です、そうでした。 – user1350264

+0

心配しないで...うれしい – aqwert