2013-07-18 8 views
7

मुझे आश्चर्य है कि क्या डेटाग्रेडव्यू कॉलम को अपनी सामग्री में स्वचालित रूप से अपनी चौड़ाई समायोजित करने के लिए संभव है और साथ ही उपयोगकर्ता द्वारा आकार बदलने योग्य हो सकता है?डेटाग्रिड व्यू कॉलम ऑटो समायोजन चौड़ाई और आकार बदलने योग्य

यहाँ मैं अब तक की कोशिश की है:

dataGridView.AllowUserToResizeColumns = true; 
dataGridView.Columns[0].AutoSizeMode=DataGridViewAutoSizeColumnMode.DisplayedCells; 
dataGridView.Columns[0].Resizable = DataGridViewTriState.True; 

लेकिन मैं अभी भी मैन्युअल स्तंभ आकार का आकार बदलने में असमर्थ हूँ।

यदि किसी को पहले से ही इस समस्या का सामना करना पड़ा है या कोई विचार मुझे बताता है।

धन्यवाद।

+0

डिफ़ॉल्ट रूप से 'DataGridView' कॉलम आकार बदलने योग्य नहीं हैं? क्या होता है जब आप इस कोड को हटा देते हैं? क्या आप उनका आकार बदल सकते हैं? – Axarydax

+0

हाँ कॉलम आकार बदलने योग्य हैं। मेरे डेटाग्रिड में अन्य कॉलम हैं जो आकार बदलने योग्य हैं। लेकिन जैसे ही मैं ऑटोस्izeमोड = डेटाग्रिड व्यूअटोसाइज कॉलमोडोड सेट करता हूं। डिस्प्लेड कैल्स को कॉलम पर, यह विशिष्ट कॉलम अब और अधिक नहीं है, जबकि अन्य हैं। – wallou

उत्तर

16

मुझे आखिरकार जो करना चाहता था उसे करने का एक तरीका मिल गया। करने के लिए

  • तो
  • परिवर्तन AutoSizeColumnModedataGridView कॉलम ही आकार बदलने सामग्री फिट करने के लिए अनुमति देते हैं और और मूल्य तुम सिर्फ संग्रहीत साथ चौड़ाई सेट

    विचार है।

    dataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; 
    int widthCol = dataGridView.Columns[i].Width; 
    dataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; 
    dataGridView.Columns[i].Width = widthCol; 
    

    आशा इस में मदद मिलेगी:

यहाँ कोड है।

2

कोड पर बिल्डिंग ऊपर सभी स्तंभों और भी ऑटो के लिए यह दोहराने में DataGridView

//initiate a counter 
int totalWidth = 0; 

//Auto Resize the columns to fit the data 
foreach (DataGridViewColumn column in mydataGridView.Columns) 
{ 
    mydataGridView.Columns[column.Index].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; 
    int widthCol = mydataGridView.Columns[column.Index].Width; 
    mydataGridView.Columns[column.Index].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; 
    mydataGridView.Columns[column.Index].Width = widthCol; 
    totalWidth = totalWidth + widthCol; 
} 
//the selector on the left of the DataGridView is about 45 in width 
mydataGridView.Width = totalWidth + 45; 
0

बात यह है कि स्पष्ट नहीं है (यह मेरे लिए नहीं था) की चौड़ाई समायोजित की है कि इस्तेमाल होता है ऑटोसाइजोड का मतलब है कि हम आकार को प्रबंधित करना चाहते हैं, इसलिए इसका तात्पर्य है कि उपयोगकर्ता आकार बदल नहीं सकता (नहीं कर सकता)। तो मैंने जो कोशिश की है और ऐसा लगता है कि प्रत्येक कॉलम या अधिकांश कॉलम के लिए DataGridView.AutoResizeColumn (ध्यान दें कि यह एक बार का आकार बदलता है) का उपयोग करना है, फिर DataGridView.AllowUserToResizeColumns को सत्य पर सेट करें। शायद अन्य भिन्नताएं हैं लेकिन महत्वपूर्ण बात यह है कि ऑटोसाइजमोड का उपयोग पारस्परिक रूप से अनन्य है जो उपयोगकर्ता को आकार बदलने की इजाजत देता है।

0
  • ऊपर (DataGridView.Columns के माध्यम से पुनरावृति करने के लिए, एक वैध एक को AutoSizeMode बदलने के लिए, चौड़ाई मूल्य इकट्ठा करने और DataGridViewAutoSizeColumnMode.None करने के लिए इसे वापस सेट परिवर्तन AutoSizeMode के बाद) समाधान के लिए धन्यवाद।
  • मैंने इसके साथ संघर्ष किया, और ध्यान दिया कि जब भी इसे क्लास कन्स्ट्रक्टर या Form.Show() या Form.ShowDialog() से पहले किसी भी पंक्ति से कहा जाता है तो यह काम नहीं करेगा। इसलिए मैंने इस कोड स्निपेट को Form.Shown ईवेंट में रखा है और यह मेरे लिए काम करता है।
  • मेरे तब्दील कोड, जो कुछ भी की reguardless DataGridView.AutoSizeColumnsMode पहले सेट, मैं बजाय DataGridViewColumn.AutoSizeMode बदलने की DataGridViewColumn.GetPreferredWidth() का उपयोग करें और चौड़ाई मूल्य तुरंत निर्धारित करते हैं, तो DataGridView.AutoSizeColumnsMode एक बार बदलने के लिए:

    private void form_Shown(object sender, EventArgs e) 
    { 
         foreach (DataGridViewColumn c in dataGridView.Columns) 
          c.Width = c.GetPreferredWidth(DataGridViewAutoSizeColumnMode.DisplayedCells, true); 
         dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None; 
    } 
    
  • स्थापित करने के लिए सुनिश्चित करें

     dataGridView.AllowUserToResizeColumns = true; 
    
  • मुझे नहीं पता कि फ़ॉर्म के दिखाए जाने के बाद यह केवल काम कैसे करता है।

0

तुम सिर्फ इस सरल कोड का उपयोग कर सकते हैं:

dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells); 

डेटा स्रोत स्थापित करने के बाद। यह चौड़ाई निर्धारित करेगा और आकार बदलने की अनुमति देगा।

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