1

オブジェクトをそれにバインドしList<TripStop>、ドロップダウン リストに使用するように要求するインターフェイスを作成しました。

//Convert the TripStop dictionnary to a list for databinding
StartStop.DataSource = EditorPlugin.getTripStops().Values.ToList();
StartStop.ValueMember = "Id";
StartStop.DisplayMember = "NameFr";

Value/DisplayMembers としての Id および NameFr。

バインド後にデータソースを調べると、すべてのデータが正しくバインドされていることがわかります。各オブジェクトの各プロパティは問題なく、データは破損していません。

問題?何かを選択して SelectedValue を見ると、間違った値が出力され、まったく別のアイテムの「ID」が取得されます。

逆も同じです。フォームをロードし、DropDownList に次のことを依頼します。

StartStop.SelectedValue = EditorObject.StartStop;

そして、表示されているのは、選択を依頼した実際の値とはまったく異なるアイテムです。たとえば、アイテム #4 を要求すると、#14 が選択されます。リストでアイテム #4 を選択すると、SelectedValue は #14 になります。

指標と値の間に相関関係はありません。

まだ見知らぬ人、もしそうなら:

EditorObject.StartStop = (UInt32)((TripStop)StartStop.SelectedItem).Id;

このメソッドは正常に機能し、選択したアイテムから正しい値を取得します。

4

1 に答える 1

0

たまたま、SelectedIndexChanged または SelectedValueChanged で選択内容の値を確認していませんか? プログラムによる割り当てとユーザーが選択した割り当てが SelectionChangeCommitted に切り替わったため、いくつかの問題がありました。これが私が知っている例です...

// On Load...
city_IDComboBox.DataSource = context.Cities.Local.ToBindingList();
city_IDComboBox.DisplayMember = "Name";
city_IDComboBox.ValueMember = "ID";

// Checking value of selection, acting on it
private void city_IDComboBox_SelectionChangeCommitted(object sender, EventArgs e)
{
   var currentCounty = county_IDComboBox.SelectedItem as County;
   var currentCity = city_IDComboBox.SelectedItem as City;
   if (currentCity != null)
   {
      if (currentCounty != null)
      {
         if (currentCity.County_ID == currentCounty.ID)
            return;
      }
      county_IDComboBox.SelectedValue = currentCity.County_ID;
   }
   else
   {
      county_IDComboBox.SelectedItem = null;
   }
}
于 2013-02-01T20:05:24.830 に答える