मैं एक डैशबोर्ड एप्लिकेशन बना रहा हूं जो FlowLayoutPanel
पर सैकड़ों "आइटम" दिखाता है।सैकड़ों कस्टम UserControls हजारों उपयोगकर्ता ऑब्जेक्ट्स बनाते हैं
प्रत्येक "आइटम" UserControl
है जो 12 टेक्स्टबॉक्स या लेबल से बना है।
मेरा ऐप डेटाबेस से पूछताछ करता है और फिर प्रत्येक रिकॉर्ड के लिए "आइटम" उदाहरण बनाता है, इसे FlowLayoutPanel
पर जोड़ने से पहले डेटा के साथ लेबल और टेक्स्टबॉक्स को पॉप्युलेट करता है।
पैनल में लगभग 560 आइटम जोड़ने के बाद, मैंने देखा कि USER Objects
मेरे टास्क मैनेजर में गिनती लगभग 7300 तक बढ़ गई थी, जो मेरी मशीन पर किसी अन्य ऐप से कहीं अधिक बड़ी थी।
मैं लगा 560 * 13 (12 लेबल प्लस UserControl ही) 7280 ताकि अचानक दूर दे दी है जहां सभी वस्तुओं को जानने से पहले एक 10,000 उपयोगकर्ता वस्तु सीमा है से ...
आ रहे थे यह है कि खिड़कियां तौलिया में फेंकता है, मैं इन "वस्तुओं" को FlowLayoutPanel
पर खींचने के बेहतर तरीके खोजने की कोशिश कर रहा हूं। "आइटम"
उपयोगकर्ता-आकर्षित, लेबल के कई के स्थान पर
graphics.DrawText
औरDrawImage
का उपयोग कर:मेरे विचारों अब तक इस प्रकार हैं। मैं आशा करती हूं कि यह 1 आइटम = 1
USER Object
, नहीं 13."आइटम", तो प्रत्येक रिकॉर्ड के लिए, उदाहरण के पॉप्युलेट और एक छवि हड़पने के लिए
Control.DrawToBitmap()
विधि का उपयोग करें और उसके बाद की 1 उदाहरण है मतलब होगा का उपयोग करें कि मेंFlowLayoutPanel
(या इसी तरह)
तो ... किसी को भी किसी भी अन्य सुझाव हैं ???
पीएस यह एक ज़ूम करने योग्य इंटरफ़ेस है, इसलिए मैंने पहले से ही "पेजिंग" से इंकार कर दिया है क्योंकि सभी आइटम एक बार
सैकड़ों बिटमैप्स या चित्र बॉक्स बनाने के विरोध में, मुझे लगता है कि दृष्टिकोण प्रत्येक नियंत्रण को सीधे 'पिक्चरबॉक्स' की छवि पर आकर्षित करेगा, या एक "स्प्राइट" बिटमैप होगा और सभी नियंत्रण आकर्षित करेगा उस से। यद्यपि वे वास्तव में * बस * लेबल हैं, तो मुझे लगता है कि 'टेक्स्ट रेन्डरर' का उपयोग करना और नियंत्रण को पूरी तरह से बाईपास करना आसान है - यह कहना मुश्किल है कि यहां वास्तव में क्या खींचना है। – Aaronaught
मैं उसे 'टेक्स्ट रेन्डरर' से दूर ले जाऊंगा, क्योंकि यह बहुत धीमा है ('ग्राफिक्स.ड्रास्ट्रिंग' के सापेक्ष), लेकिन अन्यथा मैं मानता हूं कि उनका सबसे अच्छा तरीका केवल प्रत्येक डेटाबेस पंक्ति को केवल एक ही नियंत्रण में प्रस्तुत करना है (और अधिमानतः केवल दृश्य पंक्तियों को प्रस्तुत करें)। – MusiGenesis