2009-03-09 8 views
7

में परिवर्तनीय ऊंचाई पंक्तियां क्या विवरण मोड में WinForms ListView के भीतर चर-ऊंचाई पंक्तियां हो सकती हैं?WinForms ListView

कोई रोहेइट या पंक्तियां नहीं है [i] जहां तक ​​मुझे पता है नियंत्रण पर वह संपत्ति।

कुछ ब्लॉग मालिकों को लागू करने का सुझाव देते हैं, जो मैंने किया था, लेकिन मुझे अभी भी ईवेंट हैंडलर के भीतर ऊंचाई संपत्ति जैसा कुछ भी नहीं मिल रहा है।

आदर्श रूप से, पंक्ति की ऊंचाई आवश्यक होने पर मल्टीलाइन टेक्स्ट दिखाने के लिए स्वतः आकार होगी।

उत्तर

2

एक विकल्प में सोचने के लिए की:

, सभी पंक्तियों के आइटम ऊंचाई ओवरराइड करने के लिए एक डमी ImageList बना सकते हैं और वांछित ऊंचाई के लिए सेट और दृश्य के आधार पर सूचीदृश्य के लिए असाइन करें या http://www.codeproject.com/KB/list/changerowheight.aspx की अवधारणा को समझ

यदि आप ObjectListView का उपयोग करते हैं, तो आप सभी पंक्तियों की आइटम ऊंचाई easily बदल सकते हैं। लेकिन फिर भी, जब तक आप ListView का उपयोग कर रहे हों, तब तक व्यक्तिगत आइटम ऊंचाई को बदलने का कोई तरीका नहीं है।

+0

यह एक बंद समाधान के रूप में अच्छा है (यदि ऊंचाई पहले से ही ज्ञात है), लेकिन मैं इसे लंबे बहु-पंक्ति कोशिकाओं में समायोजित करना चाहता हूं। – dbkk

4

यदि आप विवरण मोड का उपयोग कर रहे हैं, तो मुझे आश्चर्य है कि DataGridView अधिक बहुमुखी नहीं होगा। प्रत्येक पंक्ति में ऊंचाई होती है, या आप स्वचालित रूप से ऐसा करने के लिए AutoSizeRowsMode का उपयोग कर सकते हैं। MSDN देखें "विंडोज फॉर्म्स डेटाग्रिड व्यू कंट्रोल में कॉलम और पंक्तियों का आकार बदलना"।

+1

मैं GridView कोशिश की, लेकिन कुछ कारण के लिए यह * बहुत * धीमा है (कई वस्तुओं के साथ वर्चुअल मोड में)। – dbkk

0

विंडोज सूची दृश्य नियंत्रण (जो .NET ListView नियंत्रण द्वारा लपेटा गया है) परिवर्तनीय पंक्ति ऊंचाई का समर्थन नहीं करता है।

यदि आप ListView के साथ चिपके रहते हैं, तो आपको ऊंचाई पंक्तियों को निश्चित करने की आवश्यकता होगी।

1

लिस्टबॉक्स नियंत्रण चर परिवर्तनीय ऊंचाई पंक्तियों का समर्थन करता है, लेकिन आपने स्वयं को सभी चित्रों को किया है।

OwnerDrawVariable को

फिर जोड़ने

protected override void OnDrawItem(DrawItemEventArgs e) 
{ 
    /* Drawing code here */ 
} 

protected override void OnMeasureItem(MeasureItemEventArgs e) 
{ 
    /* Measure code here */ 
} 

मैं प्रत्येक कार्य उपयोगकर्ता द्वारा दर्ज सूचीबद्ध करने के लिए टास्क रिपोर्टर नाम के एक कार्यक्रम में स्वामी द्वारा तैयार की लिस्टबॉक्स का उपयोग DrawMode सेट करें। प्रत्येक प्रविष्टि अलग-अलग होती है कि टेक्स्ट कितना दर्ज किया जाता है।

+0

यदि डेटाग्रिड व्यू का उपयोग करना संभव नहीं है, तो यह आपके एकमात्र विकल्प की तरह लगता है। – cofiem

+0

यह ListBox के लिए है, सूची दृश्य नहीं। एक अलग नियंत्रण, जो एमवीसी/वर्चुअल मोड का समर्थन नहीं करता है। – dbkk

+0

उन्होंने यह निर्दिष्ट नहीं किया कि उन्हें वर्चुअल मोड की आवश्यकता है, इसलिए मैं सिर्फ एक वैकल्पिक नियंत्रण का सुझाव दे रहा था जो जरूरतों को पूरा करेगा। –

0

यदि परिवर्तनीय ऊंचाई पंक्तियां आप चाहते हैं, तो मैं इसके बजाय DataGridView का उपयोग करने पर विचार करूंगा। यह परिवर्तनीय ऊंचाई पंक्तियों (सेल शैलियों के उपयोग के माध्यम से) का बहुत अधिक समर्थन करता है और जो भी आप चाहते हैं उसे करने के लिए सूची दृश्य को shoehorn करने की कोशिश करने के बजाय उपयोग करना बहुत आसान है।

2

ऑब्जेक्ट लिस्ट व्यू पहले उत्तर में उल्लिखित चर पंक्तियों का समर्थन नहीं करता है। यह स्पष्ट रूप से इसके FAQ में कहता है। अंतर्निहित विंडोज सूचीदृश्य नियंत्रण बस चर पंक्ति पंक्ति का समर्थन नहीं करता है। आपको अन्य, कस्टम लिखित नियंत्रणों को देखना होगा।

आप Matthew Hall’s excellent XPTable और its update project, साथ ही ली पॉल अलेक्जेंडर के शानदार Outlook-style list पर विचार करना चाह सकते हैं।

1

आप 3 पार्टी घटकों के साथ ठीक कर रहे हैं, Better ListView का समर्थन करता है वास्तव में यह (प्रत्येक आइटम एक CustomHeight संपत्ति है, इसलिए प्रत्येक अलग ऊंचाई हो सकता है):

enter image description here