आप DataGridView नियंत्रण में कॉलम का स्वचालित रूप से आकार कैसे लेते हैं और उपयोगकर्ता को उसी ग्रिड पर कॉलम का आकार बदलने की अनुमति देता है?


109

मैं Windows प्रपत्र (C # 2.0 नहीं WPF) पर एक DataGridView नियंत्रण आबाद कर रहा हूँ।

मेरा लक्ष्य एक ग्रिड को प्रदर्शित करना है जो सभी उपलब्ध चौड़ाई को कोशिकाओं के साथ भरता है - यानी कोई भी अप्रयुक्त (डार्क ग्रे) नहीं है जो सही और आकार में प्रत्येक कॉलम को उचित रूप से उसमें शामिल डेटा के अनुसार आकार देता है , लेकिन उपयोगकर्ता को किसी भी कॉलम का आकार बदलने की अनुमति देता है उनकी पसंद के अनुसार।

मैं प्रत्येक स्तंभ के AutoSizeMode की स्थापना होने के लिए इस लक्ष्य को प्राप्त करने का प्रयास कर रहा हूँ DataGridViewAutoSizeColumnMode.AllCells कॉलम जो मैं करने के लिए सेट में से एक को छोड़कर DataGridViewAutoSizeColumnMode.Fill आदेश ग्रिड के पूरे क्षेत्र को बड़े करीने से डेटा से भर जाता है सुनिश्चित करने के लिए। (मुझे कोई आपत्ति नहीं है कि जब उपयोगकर्ता इस स्तंभ का आकार बदलने का प्रयास करता है तो यह एक ऐसे आकार में वापस आ जाता है जो सुनिश्चित करता है कि क्षैतिज स्थान हमेशा उपयोग किया जाता है।)

हालाँकि, जैसा कि मैंने उल्लेख किया है, एक बार लोड होने के बाद, मैं उपयोगकर्ता को अपनी आवश्यकताओं के अनुरूप कॉलम को आकार देने की अनुमति देना चाहूंगा - प्रत्येक कॉलम के लिए इन AutoSizeMode मूल्यों को सेट करने में, ऐसा प्रतीत होता है कि उपयोगकर्ता तब उन स्तंभों का आकार बदलने में असमर्थ है।

मैंने उन सभी स्तंभों के AutoSizeMode को सेट करने की कोशिश नहीं की है जो BUT का आकार बदलने की अनुमति देते हैं, उन कोशिकाओं के डेटा के अनुसार प्रारंभिक आकार सेट नहीं करते हैं। डेटा लोड करने के बाद ग्रिड के AutoSizeMode को वापस "नॉट सेट" में बदलते समय भी यही परिणाम होता है।

क्या ऐसी कोई सेटिंग है जो मैं यहां याद कर रहा हूं जो डिफ़ॉल्ट कॉलम चौड़ाई और उपयोगकर्ता को स्वचालित रूप से सेट करने की अनुमति देता है या क्या कोई अन्य तकनीक है जिसका उपयोग मुझे करना होगा जब मुझे DataGridView नियंत्रण को पॉप्युलेट करना होगा?


इसे "नहीं सेट" पर सेट न करें, इसे "कोई नहीं " पर सेट करें, इसलिए पुन : वापसी वापस नहीं होगी - c # .net2.0 के लिए परीक्षण किया गया
bh_earth0

जवाबों:


132

यह ट्रिक मेरे लिए काम करती है:

grd.DataSource = DT;

//set autosize mode
grd.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

//datagrid has calculated it's widths so we can store them
for (int i = 0; i <= grd.Columns.Count - 1; i++) {
    //store autosized widths
    int colw = grd.Columns[i].Width;
    //remove autosizing
    grd.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    //set width to calculated by autosize
    grd.Columns[i].Width = colw;
}

यहाँ क्या होता है कि आपने ऑटोहिज़ को सेट किया है जिसे आपको अपनी जरूरत के हिसाब से सेट करना है और फिर कॉलम द्वारा कॉलम आप ऑटोसाइज़ गणना से प्राप्त चौड़ाई को संग्रहीत करते हैं, ऑटोसाइजिंग को हटा दें और आपके द्वारा पहले संग्रहीत मूल्य को चौड़ाई सेट करें।


1
मैंने AutoResizeColumnWidthsYetAllowUserResizing नाम की दिनचर्या में समान कोड डाला। यह शुरू में ग्रिड को पॉप्युलेट करने के बाद और उपयोगकर्ता द्वारा डेटा संपादित करने के बाद भी (ग्रिड के सेलएंडईड ईवेंट से) कहा जाता है।
डेवलपर

5
यह महान कोड है। 'DataGridView1_DataSourceChanged' ईवेंट में डालने की आवश्यकता है।
user890332 17

1
यह मुझे लगता है कि कर grd.Columns(i).Width = grd.Columns(i).Widthपहले से ही चाल है। देखें यहाँ
एंटोनियो

2
सी # समान के लिए, लेकिन चौकोर कोष्ठक के साथ dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
बारलोप

यह बहुत देर से आया है, लेकिन कोई भी मौका या रास्ता, हम किसी विशेष पंक्ति की सामग्री के आधार पर आकार बदल सकते हैं? पहले पंक्ति में कोशिकाओं की सामग्री के आधार पर, अन्य पंक्तियों में कोशिकाओं की चौड़ाई के बावजूद कहते हैं?
मुर्तुज़ा हुसैन

45

शायद तुम बुला सकते हो

dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.Fill);

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

MSDN DataGridView.AutoResizeColumns Method (DataGridViewAutoSizeColumnsMM) पर अधिक ।


2
मुझे यकीन नहीं है कि इस उत्तर पर अधिक ध्यान क्यों नहीं दिया जा रहा है। बहुत क्लीनर। यद्यपि यदि आप सेल सामग्री की चौड़ाई का मिलान करना चाहते हैं तो DataGridViewAutoSizeColumnsMode.AllCells थोड़ा बेहतर काम करता है।
इवल्कबरेफूट

31
इस समाधान का उपयोग करने से मुझे अगली त्रुटि मिल रही है: "पैरामीटर AutoSizeColumnMode इस ऑपरेशन के लिए मान्य नहीं है। यह NotSet नहीं हो सकता है, कोई भी नहीं या भरें लेकिन एक आकार के मानदंड को इंगित करने की आवश्यकता है।" । मैंने इस dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
22

6
DataGridViewAutoSizeColumnMode.Fill का उपयोग करना काम नहीं करता है क्योंकि यह सेल सामग्री को अनदेखा करता है जब स्तंभों को आकार देता है।
स्टुअर्ट हेलविग

मैंने इस विधि का उपयोग किया है DataGridViewAutoSizeColumnsMode.DisplayedCells। इसके अलावा, प्रपत्र डिज़ाइनर में, AutoSizeColumnsMode को किसी पर सेट नहीं किया जाता है। मुझे इस विधि कॉल को DataGridView के DataBindingComplete ईवेंट हैंडलर में निष्पादित करने की आवश्यकता है, यह सुनिश्चित करने के लिए कि यह हमेशा (पुनः) आकार ठीक से हो।
दैन

7
मैं सभी upvotes को नहीं समझता ... यह बिल्कुल भी काम नहीं करता है, MSDN दस्तावेज़ीकरण स्पष्ट है, ऐसा करने से एक ArgumentException होती है यदि autoSizeColumnsMode का मान कोई नहीं है या भरें।
लैरी

31

Miroslav Zadravec के कोड का AC # संस्करण

for (int i = 0; i < dataGridView1.Columns.Count-1; i++)
{
    dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
dataGridView1.Columns[dataGridView1.Columns.Count - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
    int colw = dataGridView1.Columns[i].Width;
    dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    dataGridView1.Columns[i].Width = colw;
}

समुदाय विकी के रूप में पोस्ट किया गया ताकि दूसरों की प्रतिष्ठा को ठेस न पहुंचे


15

अपने आवेदन में मैंने निर्धारित किया है

grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

इसके अलावा, मैंने निर्धारित किया है

grid.AllowUserToOrderColumns = true;
grid.AllowUserToResizeColumns = true;

अब कॉलम की चौड़ाई को बदला जा सकता है और कॉलम को उपयोगकर्ता द्वारा फिर से व्यवस्थित किया जा सकता है। यह मेरे लिए बहुत अच्छा काम करता है।

हो सकता है कि यह आपके लिए काम करेगा।


ग्रिड के AutoSizeColumnsMode को "Fill" करने के लिए सेट करने से लगता है कि सभी कॉलम समान चौड़ाई में सेट किए गए हैं। हाँ स्तंभ फिर से बदलने योग्य हैं, लेकिन प्रारंभिक चौड़ाई सभी गलत हैं। मुझे "मैन्युअल" कोड में कॉलम की चौड़ाई निर्धारित करने की आवश्यकता हो सकती है।
स्टुअर्ट हेलविग

DV- ग्रिड.एटोएससाइकल्यूमेंट्समोड = डेटाग्रिड व्यूऑटोएससाइकल कॉलम-> s <- आईडीएफ; (आप एस से चूक गए, यह बायीं ओर कोलम्समोड है और दाहिने हाथ की तरफ है, ताकि आपकी एक पंक्ति संकलित न हो) ऑटोसिज़ करने के लिए डेटाग्रिड्यूव प्राप्त करने का कोड बहुत कष्टप्रद है क्योंकि यह कम से कम आपके उत्तर को पहले जांचता है। । यह आपके द्वारा लिखी गई पहली पहली पंक्ति है और गलत है।
बार्लोप

@barlop आपके उत्तर के लिए धन्यवाद। आपके पास सवाल और जवाब संपादित करने का विशेषाधिकार है। अगर आप मेरे कोड में कोई गलती करते हैं तो बेझिझक संपादित करें।
Jehof

12

ग्रिड में डेटा जोड़ने के बाद निम्नलिखित कोड जोड़ें जो प्रत्येक सेल में डेटा की लंबाई के अनुसार कॉलम को समायोजित करेगा

dataGrid1.AutoResizeColumns();            
dataGrid1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

ये रहा रिजल्ट

यहां छवि विवरण दर्ज करें


9

खैर, मैंने इस तरह किया:

dgvReport.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
dgvReport.AutoResizeColumns();
dgvReport.AllowUserToResizeColumns = true;
dgvReport.AllowUserToOrderColumns = true;

उस विशेष क्रम में। कॉलम का आकार परिवर्तन (विस्तारित) किया जाता है और उपयोगकर्ता बाद में कॉलम का आकार बदल सकता है।


6

अगर मैं इस प्रश्न को सही ढंग से समझ गया तो आपको जो भी चाहिए उसे पूरा करने का एक आसान तरीका होना चाहिए। कॉल dgvSomeDataGrid.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

यह ट्रिक काम आना चाहिए। हालाँकि, वहाँ एक नुकसान है क्योंकि आप सीधे अपने DataGridView नियंत्रण को आबाद करने के बाद इस पद्धति को कॉल नहीं कर सकते। इसके बजाय आपको VisibleChanged ईवेंट के लिए EventHandler जोड़ना होगा और वहां विधि को कॉल करना होगा।


1
यह सामग्री के अनुसार कॉलम का आकार बदल देगा, लेकिन यह सुनिश्चित नहीं करेगा कि सभी उपलब्ध ग्रिड स्थान का उपयोग किया जाए। यानी, यदि कोई जगह है तो शेष स्थान को "भरें" नहीं है।
स्टुअर्ट हेलविग


4

प्रश्न का फिर से शुरू करें:
क्या स्तंभ की चौड़ाई सामग्री के अनुकूल है (स्तंभ में अलग-अलग विधि के साथ),
लेकिन फिर उपयोगकर्ता को कॉलम सेट करने की अनुमति दें ...

मिरोस्लाव ज़ाद्रेव के जवाब से विकसित , मेरे लिए जो काम किया गया था वह तुरंत column.Widthसेट करने के लिए गणना किए गए ऑटो का उपयोग कर रहा था ... column.Width!

foreach (DataGridViewColumn column in dataGridView.Columns)
{
    if (/*It's not your special column*/)
    {
        column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
        column.Width = column.Width; //This is important, otherwise the following line will nullify your previous command
        column.AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet;
    }
}

//Now do the same using Fill instead of AllCells for your special column

यह काम करने के लिए परीक्षण किया जाता है जब DataGridViewपहले से ही इस तरह की एक चाल का उपयोग करके बनाया जाता है ।


जैसा कि आपका कोड करता है, मैं फ़ॉरच का उपयोग करना पसंद करता हूं। यह अधिक पठनीय बनाता है जब आपके पास लूप के शीर्ष में कोई गणित नहीं होता है। मैंने इसे इस तरह से किया, और "कॉलम। विथ = कॉलम। विथ;" दिलचस्पी है।
ग्रेग बर्थ

4

यह मेरे लिए चमत्कार था:

dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

1
सरल उपाय!
मार्क क्रैम

1
मेरे लिए केवल तभी काम किया जाता है जब बाद में कोई भी सेट न हो, अर्थातdataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
Do-do-new

3

यह उनकी सामग्री के अनुसार सभी कॉलमों को स्वत: प्रकाशित करता है, एक निर्दिष्ट कॉलम को खींचकर शेष खाली स्थान को भरता है और किसी भी भविष्य के आकार को भरने के लिए अंतिम कॉलम को सेट करके 'जंपिंग' व्यवहार को रोकता है।

// autosize all columns according to their content
dgv.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
// make column 1 (or whatever) fill the empty space
dgv.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
// remove column 1 autosizing to prevent 'jumping' behaviour
dgv.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
// let the last column fill the empty space when the grid or any column is resized (more natural/expected behaviour) 
dgv.Columns.GetLastColumn(DataGridViewElementStates.None, DataGridViewElementStates.None).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

मुझे पता है कि यह एक पुराना उत्तर है, लेकिन मैं तब भी काम करता हूं, जब स्तंभों की संख्या पहले से ज्ञात नहीं है।
नीलो पेम

2

Miroslav Zadravec के कोड से थोड़े से एनटर C # कोड के आधार पर सभी कॉलमों को स्वतः सहेजा जाना है

for (int i = 0; i < dgvProblems.Columns.Count; i++)
{
    dgvProblems.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    int colw = dgvProblems.Columns[i].Width;
    dgvProblems.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    dgvProblems.Columns[i].Width = colw;
}

2

मिरोस्लाव ज़ाद्रेव के कोड का एक और संस्करण, लेकिन थोड़ा अधिक स्वचालित और सार्वभौमिक:

    public Form1()
    {
        InitializeComponent();
        dataGridView1.DataSource = source;
        for (int i = 0; i < dataGridView1.Columns.Count - 1; i++) {
            dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
        }
        dataGridView1.Columns[dataGridView1.Columns.Count].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

    }

    void Form1Shown(object sender, EventArgs e)
    {
        for ( int i = 0; i < dataGridView1.Columns.Count; i++ )
        {
            int colw = dataGridView1.Columns[i].Width;
            dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            dataGridView1.Columns[i].Width = colw;
        }
    }

मैंने दूसरे भाग को अलग-अलग घटना में डाला, क्योंकि मैं datagridvewफॉर्म के आरंभीकरण में भरता हूं और यदि दोनों भाग होते हैं, तो कुछ भी नहीं बदल रहा है, क्योंकि संभवतः datagridviewप्रदर्शित होने के बाद चौड़ाई की स्वतः गणना करता है, इसलिए चौड़ाई अभी भी Form1()विधि में डिफ़ॉल्ट हैं । इस विधि को समाप्त करने के बाद, ऑटोसाइज़ अपनी ट्रिक करता है और उसके तुरंत बाद (जब फॉर्म दिखाया जाता है) हम कोड के दूसरे भाग द्वारा चौड़ाई सेट कर सकते हैं (यहां Form1Shownघटना में)। यह मेरे लिए एक आकर्षण की तरह काम कर रहा है।


2

यहाँ सी # में Miroslav Zadravec के उत्तर के लिए एक सरल कोड दिया गया है:

CurrentDGV.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader;
for (int i = 0; i < dataGridView1.Columns.Count; i++) dataGridView1.Columns[i].Width = dataGridView1.Columns[i].Width;
CurrentDGV.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;

1

क्या आपने FillWeightअपनी DataGridViewColumnsवस्तु की संपत्ति स्थापित करने की कोशिश की ?

उदाहरण के लिए:

this.grid1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
this.grid1.Columns[0].FillWeight = 1.5;

मुझे लगता है कि यह आपके मामले में काम करना चाहिए।


1

Schnapple के संस्करण से थोड़ा सुधार

int nLastColumn = dgv.Columns.Count - 1;
for (int i = 0; i < dgv.Columns.Count; i++)
{
    if (nLastColumn == i)
    {
        dgv.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    }
    else
    {
        dgv.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    }
}

for (int i = 0; i < dgv.Columns.Count; i++)
{
    int colw = dgv.Columns[i].Width;
    dgv.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    dgv.Columns[i].Width = colw;
}


1

कॉलम की चौड़ाई इसकी सामग्री को फिट करने के लिए सेट की गई है जिसका उपयोग मैंने बोलो स्टेटमेंट में किया है, इसने मेरी समस्या को हल कर दिया है।

पहला कदम :

RadGridViewName.AutoSize = true;

दूसरा कदम :

// This mode  fit in the header text and column data for all visible rows. 
this.grdSpec.MasterTemplate.BestFitColumns();

तीसरा चरण :

for (int i = 0; i < grdSpec.Columns.Count; i++) 
{
    // The column width adjusts to fit the contents all cells in the control.
    grdSpec.Columns[i].AutoSizeMode = BestFitColumnMode.AllCells; 
}

1
foreach (DataGridViewColumn c in dataGridView.Columns)
    c.Width = c.GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);

यह काम करना चाहिए कि क्या dataGridViewप्रदर्शित किया गया है या नहीं (यानी वर्ग निर्माता से भी कहा जाता है)।

उसी विधि, लेकिन DataGridViewAutoSizeColumnMode.DisplayedCellsस्पष्ट कारण के लिए उपरोक्त मामले में विफल रहता है - अभी तक कोई सेल प्रदर्शित नहीं किया गया है! कुछ गैर-स्पष्ट कारणों के लिए, AutoResizeColumnsइस मामले में भी विफल रहता है।


0

यदि आप उदाहरण के लिए अपने डेटा स्रोत को एक डिटैटेबल में बाँधते हैं, तो आपको बाइंडिंग के बाद गुणों को सेट करने की आवश्यकता है:

        private void dgv_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
            dgv.AutoResizeColumns();
            dgv.AllowUserToResizeColumns = true;
        }

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

मुझे वीबी में ऐसा करना था और इसे एक विधि में विभाजित करना पसंद था जिसे मैंने एक मॉड्यूल में रखा था। यदि आप चाहें तो भरण कॉलम को किसी अन्य ByRef पैरामीटर के रूप में जोड़ सकते हैं।

''' <summary>
''' Makes all columns in a DataGridView autosize based on displayed cells,
''' while leaving the column widths user-adjustable.
''' </summary>
''' <param name="dgv">A DataGridView to adjust</param>
Friend Sub MakeAdjustableAutoSizedGridCols(ByRef dgv As DataGridView)
    Dim width As Integer

    For Each col As DataGridViewColumn In dgv.Columns
        col.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        width = col.Width
        col.AutoSizeMode = DataGridViewAutoSizeColumnMode.None
        col.Width = width
    Next
    dgv.AllowUserToResizeColumns = True
End Sub

0

आप ऐसा कुछ कर सकते हैं:

   grd.DataSource = getDataSource();

    if (grd.ColumnCount > 1)
    {
        for (int i = 0; i < grd.ColumnCount-1; i++)
            grd.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

        grd.Columns[grd.ColumnCount-1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    }

    if (grd.ColumnCount==1)
        grd.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

सभी कॉलम कंटेंट के अनुकूल होंगे सिवाय पिछले वाले ग्रिड को भरने के।


0

$ सरणी एक PSCustomObject की सामग्री होने के साथ, यह काम करता है:

$dataGridView1.DataSource=[collections.arraylist]($array)
$dataGridView1.Columns | Foreach-Object{$_.AutoSizeMode = [System.Windows.Forms.DataGridViewAutoSizeColumnMode]::AllCells}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.