2011-09-14 10 views
9

मैं कॉलम फिट करने के लिए डेटा ग्रिड व्यू का आकार बनाना चाहता हूं और कुल आकार पंक्तियों को फिट करना चाहता हूं। कुल ऊंचाई के बारे में, मैं कॉलम की ऊंचाई करने के लिए ऐसा फिट करने में कामयाब रहे:फिट डेटा GridView आकार पंक्तियों और कॉलम के कुल आकार

const int datagridLines = 30; 
s.Height = dataGridView2.Columns[0].HeaderCell.Size.Height; 
for (byte i = 0; i < datagridLines; i++) 
{ 
    dataGridView2.Rows.Add(); 
    s.Height += dataGridView2.Rows[i].Height; 
} 
dataGridView2.ClientSize = s; 

मैं कुछ बातें करने की कोशिश की भी चौड़ाई, लेकिन कोई किस्मत फिट करने के लिए। कोई सुझाव?

धन्यवाद।

उत्तर

16

यह काम करना चाहिए:

int height = 0; 
foreach (DataGridViewRow row in dataGridView1.Rows) { 
    height += row.Height; 
} 
height += dataGridView1.ColumnHeadersHeight; 

int width = 0; 
foreach (DataGridViewColumn col in dataGridView1.Columns) { 
    width += col.Width; 
} 
width += dataGridView1.RowHeadersWidth; 

dataGridView1.ClientSize = new Size(width + 2, height + 2); 

+ 2 width और height मूल्यों के खाते में एक फ़ज कारक हैं DataGridView के आंतरिक तत्वों की चौड़ाई के लिए। मुझे कहीं भी कोड देखने को याद है जो आपको हार्ड कोड संख्याओं के बिना यह मान प्राप्त करने की अनुमति देगा लेकिन मुझे अब यह नहीं मिल रहा है।

+0

हाँ, वह था, धन्यवाद जय! – alexxx

+0

क्या यह पैडिंग गुण +2 ऑफ़सेट मानों में योगदान दे सकता है? Http://stackoverflow.com/questions/7193268/how-to-decrese-the-size-of-button-to-a-small-size-inside-cell-of-datagrid-view-bu/ का स्वीकृत उत्तर देखें 7198229 # टिप्पणी-8,785,853। – TheBlastOne

+0

@TheBlastOne - पैडिंग संपत्ति सेल एज और इसकी सामग्री के बीच की जगह सेट करती है। मुझे विश्वास है कि DataGridViewColumn.DividerWidth संपत्ति के साथ कुछ करने के लिए है। –

0

ऐसा करने के लिए आपको DataGridViewRow संग्रह और DataGridViewColumn संग्रह के गुणों का उपयोग करने की आवश्यकता होगी।

दृष्टिकोण इस में इस्तेमाल के समान का प्रयास करें:

how to increase rows size in DataGridView

+0

आपके उत्तर के लिए भी धन्यवाद ममता दलाल। – alexxx

8

GetRowsHeight और GetColumnsWidth पंक्तियाँ और स्तंभ संग्रह आप देना चाहिए क्या आप एक सरल तरीके से जरूरत के तरीकों:

var totalHeight = dataGridView2.Rows.GetRowsHeight(DataGridViewElementStates.None); 
var totalWidth = dataGridView2.Columns.GetColumnsWidth(DataGridViewElementStates.None); 
+0

इसमें हेडर ऊंचाई/चौड़ाई शामिल नहीं है। – AbleArcher

+1

आप कुल चौड़ाई कर सकते हैं + = dataGridView1.RowHeadersWidth; – barlop

7

एक थोड़ा और अधिक पूर्ण संस्करण:

dataGridView.Height = dataGridView.Rows.GetRowsHeight(DataGridViewElementStates.None) + dataGridView.ColumnHeadersHeight + 2; 

dataGridView.Width = dataGridView.Columns.GetColumnsWidth(DataGridViewElementStates.None) + dataGridView.RowHeadersWidth + 2; 
+0

अभी भी हार्ड-कोडेड 2. – AbleArcher

+1

ध्यान देने योग्य है, जो सबसे अच्छा टिक्की और जे को जोड़ता है, लेकिन आपको '2' पर विस्तृत होना चाहिए। – barlop

+0

इस मामले के लिए काम नहीं करता है, हालांकि मेरे पास एक अक्षम विधि है जो http://stackoverflow.com/questions/37635932/calculate-padding-of-datagridview-when-padding-is-greater-than-two – barlop

0

यह एक बालक देर और में है दृश्य मूलभूत, लेकिन यह मामले में मेरे लिए काम करता है किसी और को यह धागा मिल जाता है। मैं एक tableLayoutPanel में एक डॉकड डेटाग्रिडव्यू का उपयोग कर रहा हूं, जो फॉर्म का आकार बदलते समय स्वचालित रूप से आकार बदलता है। यह फॉर्म को कम नहीं करता है। मैं बस छोटा फॉर्म शुरू करता हूं। पंक्तियों को एक ही तकनीक का उपयोग करके जोड़ा जा सकता है।

Private Sub setFormWidth() 
     Dim iTotalWidth As Integer = 0 '884 
     Dim iDisplayedWidth As Integer = 0 
     Dim r As Rectangle 
     For Each c As DataGridViewColumn In dgv_EmpList.Columns 
      If c.Visible Then 
       iTotalWidth += c.Width 
       r = dgv_EmpList.GetColumnDisplayRectangle(c.Index, True) 
       iDisplayedWidth += r.Width 
      End If 
     Next 
     Me.Width += (iTotalWidth - iDisplayedWidth) 
    End Sub 
+0

ए काम करता है ब्लॉक उद्धरण तब होता है जब आप किसी अन्य स्रोत को उद्धृत कर रहे होते हैं। साथ ही, जब तक आपका फॉर्म सीमाहीन न हो, आपको इसके बजाय Me.ClientSize का उपयोग करना चाहिए, क्योंकि इससे सीमाएं बहिष्कृत होंगी (जिनके पास विभिन्न विंडो संस्करणों पर अलग-अलग मान हैं)। – LarsTech

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