سؤال

لدي 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 ويصدق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top