لماذا ليس لي ListView قائمة عرض أو تفاصيل العناصر؟

StackOverflow https://stackoverflow.com/questions/163472

  •  03-07-2019
  •  | 
  •  

سؤال

وعن طريق C # .NET 2.0، لدي ListView مرسومة المالك حيث أنا تجاوز الأحداث OnDrawColumnHeader، OnDrawItem وOnDrawSubitem. إذا أنا تعيين الخاصية عرض لتفاصيل في وقت التصميم، كل شيء يعمل بشكل جميل ويمكنني تبديل خاصية عرض وعرض جميع وسائط عرض كما ينبغي (أنا لا تستخدم عرض بلاطة). ومع ذلك، إذا كنت تبدأ في أي عرض آخر، كل من قائمة وجهات النظر تفاصيل فارغة.

وأنا أعلم أنك سوف ربما تريد أن ترى الرمز، ولكن هناك الكثير من ذلك، لذلك أنا مترددة في الرد على ذلك كثيرا، ولكن يمكن إذا لزم الأمر. أنا أكثر الغريب إذا كان شخص ما قد ينظر إلى هذا من قبل، و / أو قد يكون ما تعانيه من كيفية إصلاحه. سوف الخاصية طريقة العرض يكون الإعداد حفظ المستخدم، ولذا فإنني لن تكون دائما قادرة على البدء في عرض تفاصيل افتراضيا.

هل كانت مفيدة؟

المحلول

ويكون ListView WinForms عناصر هي في معظمها طبقة من التجريد من الجزء العلوي من عنصر تحكم Windows الفعلية، لذلك هناك جوانب سلوكها التي هي، أيضا، الحدس هو وسيلة مهذبة لوضع الامور.

ولدي ذكريات غامضة، من الخلف في أيامي كمطور دلفي، أنه عندما كنت المالك رسم ListView الذي والبنود الفرعية من السيطرة لا يتم تعبئة في الواقع ما لم Listview الخاص بك هو في وضع "التفاصيل" عند تحميل البنود.

أشياء يمكن محاولة ...

... إجبار WinForms عناصر التحكم لإعادة التعامل مع النوافذ الأساسية بعد تغيير نمط العرض. إذا أسعفتني الذاكرة، DestroyHandle () هو الأسلوب الذي تريده.

... على افتراض أن يكون لديك "تحديث" في التطبيق الخاص بك لتحميل البيانات، تفعل أشياء تعمل بشكل صحيح عند تحديث بعد تغيير نمط العرض؟

... إذا فشل كل شيء آخر، والتسول الاقتراض أو سرقة نسخة من تشارلز الكلاسيكية Petzolds على ويندوز البرمجة.

نصائح أخرى

ولا تضاف إما بنود فرعية، أو أنك لم تقم بإضافة أي أعمدة. هذا هو شعوري الأولي.

إذا تكوينه بشكل صحيح باستخدام مصمم، واذهبوا إلى رمز مصمم ولدت ونرى ما كود تم المنبعثة من Visual Studio لحملها على العمل الصحيح. ثم مجرد محاكاة هذا الرمز.

وWithour التعليمات البرمجية، لا يوجد شيء يمكن أن يقال الكثير ولكن ما يسمى DrawColumnHeader فقط عند تعيين الخاصية OwnerDraw إلى true. ليس متأكدا مما إذا تم تعيين تلقائيا إلى الصواب والخطأ اعتمادا على الممتلكات مشاهدة ولكن الأمر يستحق إعطاء محاولة. لذا تأكد من تعيين OwnerDraw إلى true قبل إطلاق التطبيق الخاص بك.

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