ملزمة مربع تحرير وسرد إلى IList واستخدام SelectedValue
-
05-07-2019 - |
سؤال
لدي ComboBox
النحو التالي ، حيث KVPList
هو IList
(من KeyValuePair
إذا كان يهم):
comboBox.DisplayMember = "Value";
comboBox.ValueMember = "Key";
comboBox.DataSource = KVPList;
ثم إعداد ملزمة مع SelectedValue
, ملزمة إلى BindingSource
(إلى DataSet
).لأي سبب من الأسباب ، مربع التحرير والسرد دائما يتحول فارغة عندما يتم عرض النموذج.هو صحيح بالسكان ، ومع ذلك (قيم IList
تظهر بخير و يمكن اختيار).
الآن, لقد حاولت جهدي أن تتبع من خلال ويبدو أن وضع في البداية SelectedValue بشكل صحيح عند ملزمة ولكن في مكان ما على طول الطريق فإنه يحصل على إعادة تعيين إلى null
.لقد لعبت مع ترتيب الأمور تسمى كذلك ، ولكن دون جدوى.
يمكن لأي شخص أن يلقي بعض الضوء على هذا أو اقتراح الحل?
للعلم في نفس النموذج ، لدي آخر ComboBox
في نفس النموذج ، مع SelectedValue
لا بد أن نفس BindingSource
.على DataSource
هو DataSet
, لا IList
وأنه يعمل مثل السحر.قد يكون خيار لجعل DataTable
من IList
, ولكن يبدو أن الكثير من اضافية النفقات العامة ؛ انا توليد IList
من التعداد.
المحلول
أوتش.بعد أساسا نصف يوم يضيع على هذا واحد ، لقد اكتشفت ذلك.كان تماما خطأ من جانبي.
على KVPList
تم تعيين إلى IList
من KeyValuePair<
short
,string>
, لكن حقل البيانات من نوع int
.أساسا, ربط البيانات النار ، وتعيين SelectedValue
مكان الإقامة.ثم DisplayMember
و ValueMember
روابط النار ، والتحقق من SelectedValue
مرة أخرى.منذ ValueMember
هو من نوع short
, لا int
, لن تجد مباراة وبالتالي تعيين إلى null.
شيء مضحك يجب أن يحدث مع الملاكمة و علبته ، ولكن أنا متعب جدا أن نفهم لماذا الآن.
سأترك هذا السؤال في حالة شخص آخر يعمل في نفس القضية.من الصعب تعقب لأن وأتوقع أن أي محاولة الزهر أو رمي استثناء ، وليس بصمت تذهب فارغة.بعد كل شيء ، short
و int
هي كل أنواع قيمة و في آخر مرة تحققت (int)10 == (short)10
ويصدق.