2010-12-29 8 views
11

मुझे एक अजीब समस्या है और यह शायद एक साधारण फिक्स है, लेकिन बहुत से शोध के बाद, मुझे कोई समाधान नहीं मिल रहा है।मैं DataGridView पर कॉलम में शीर्षक कैसे केंद्रित कर सकता हूं?

मेरे पास DataGridView है जिस पर मैं कॉलम शीर्षकों को केंद्रित करने की कोशिश कर रहा हूं, लेकिन परिणाम केंद्र में एक बाएं पूर्वाग्रह है-लगभग इंडेंटिंग समस्या की तरह। मैंने इस मुद्दे पर साइट या दो पर कुछ पोस्ट देखी हैं, लेकिन कभी समाधान नहीं। कोई विचार?

यहाँ बयान मैं वर्तमान में उपयोग करने के लिए कोशिश कर रहा हूँ है:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

उत्तर

21

कोड द्वारा पोस्ट की गई सही रास्ते पर है: यदि आप अपने DataGridView नियंत्रण से ColumnHeadersDefaultCellStyle संपत्ति सेट करना होगा।

हालांकि, अगर आप एक नया DataGridViewCellStyle वर्ग बना सकते हैं और ColumnHeadersDefaultCellStyle संपत्ति को कि सौंपने होंगे। आप Alignment संपत्ति को अपने कोड नमूना के रूप में संशोधित नहीं कर सकते हैं जब तक कि आपने इस संपत्ति में DataGridViewCellStyle कक्षा असाइन नहीं की है।

एक खाली परियोजना में तो, उदाहरण के लिए, निम्न कोड पूरी तरह से केंद्रित प्राप्त होता स्तंभ शीर्षकों:

Dim dgvColumnHeaderStyle As New DataGridViewCellStyle() 
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle 

  DataGridView with centered column headings


भविष्य में, आप यह आसान इन प्रकार करने के लिए मिल सकता है डिजाइनर से चीजों की। यदि आपको अभी भी कोड के माध्यम से इसे स्वयं करने की आवश्यकता है, तो आप यह देखने के लिए बनाई गई *.Designer.vb फ़ाइल देख सकते हैं कि यह कैसे किया गया था।


संपादित करें: मैं अभी-अभी देखा मामूली आप में स्तंभों-यह वास्तव में प्रत्येक हेडर के अधिकार के लिए थोड़ा अतिरिक्त गद्दी पैदा नहीं करता संदर्भ दे रहे ऑफसेट। हालांकि, यह एक बग नहीं है। एक बहुत ही सरल व्याख्या है।

ListView की तरह, DataGridView कॉलम द्वारा क्रमबद्ध करने का समर्थन करता है। इसलिए, प्रत्येक कॉलम हेडर केंद्र औचित्य की गणना करते समय सॉर्ट ग्लाइफ (आमतौर पर एक तीर) प्रदर्शित करने के लिए पर्याप्त स्थान सुरक्षित करता है।

यदि आप कॉलम हेडर पूरी तरह से केंद्रित होना चाहते हैं, तो आपको सॉर्टिंग को अक्षम करने की आवश्यकता होगी। कॉलम के लिए SortMode संपत्ति को "गैर-वर्गीकृत" पर सेट करें। कॉलम टेक्स्ट केंद्र या सही उचित होने पर अंतरिक्ष को ग्लिफ के लिए आरक्षित होने से रोकना चाहिए।

+2

अपने त्वरित प्रतिक्रिया के लिए धन्यवाद। हालांकि मुझे लगता है कि आपको वही बाएं पूर्वाग्रह मिलते हैं - प्रत्येक शीर्षक काफी केंद्रित नहीं होता है। मैं कुछ जानकारी पढ़ रहा हूं जो एक बग को इंगित करने के लिए प्रतीत होता है, जिसके लिए प्रत्येक शीर्षक को कुछ रिक्त स्थान के साथ गद्देदार होना आवश्यक होता है, लेकिन स्पष्ट रूप से यह कॉलम शीर्षक की लंबाई से भिन्न होता है। यह पाठ से पहले जोड़े जाने के लिए लगभग 2.5% की पैडिंग दिखता है। स्पष्ट रूप से हालांकि, यह एक समाधान की तरह नहीं लगता है। मैंने इसे कुछ तरीकों से आजमाया है और एक ही चीज़ प्राप्त करना जारी रखा है। अजीब, हुह? – Keith

+0

बीटीडब्ल्यू, 2।कॉलम की कुल चौड़ाई का 5% है ... चूक से उत्पन्न किसी भी भ्रम के लिए खेद है। – Keith

+0

@ किथ: मैंने अभी देखा है कि आप किस बारे में बात कर रहे हैं। यह मजाकिया है, मैंने पहले कभी उस पर कोई ध्यान नहीं दिया है। और मेरे सभी दोस्त मुझे ओसीडी कहते हैं-जो उन्हें दिखाएगा! मैंने कुछ जवाब के साथ अपना जवाब अपडेट कर लिया है। –

1

आप केंद्र या कॉलम हेडर पाठ के किसी भी अन्य संरेखण शैली उपयोग करना चाहते हैं तो आप उपयोग कर सकते हैं इस

dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 
संबंधित मुद्दे

 संबंधित मुद्दे