2010-06-15 19 views
11

nella mia applicazione C# 4.0, ho un DataGridView per visualizzare alcuni dati. Voglio che le dimensioni delle colonne corrispondano al contenuto, quindi ho impostato AutoSizeColumnsMode su AllCellsExceptHeader. Ma voglio limitare le colonne a crescere oltre un certo valore. Esiste una proprietà MinimumWidth ... ma sfortunatamente no MaximumWidth Property.DataGridView Autosize ma limita la dimensione massima della colonna

Qualche idea su come risolvere questo problema?

Grazie in anticipo, Frank

risposta

11

L'unico modo sono riuscito a farlo, è quello di controllare la larghezza delle colonne dopo l'aggiunta di righe, controllare la larghezza, e se la sua dimensione è al di sopra il mio massimo, ho impostato manualmente dopo aver cambiato le colonne AutoSizeMode per DataGridViewAutoSizeColumnMode.None

 foreach(DataGridViewColumn c in myView.Columns) 
      if (c.Width > myMax) 
      { 
       c.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; 
       c.Width = myMax; 
      } 

Naturalmente, avresti bisogno di impostare l'AutoSizeColumnsMode a AllCellsExceptHeader di nuovo quando si aggiunge/aggiornamento/eliminare righe e ripetere la procedura.

3

So che è un problema più vecchio, ma l'ho affrontato da solo e ottenuto una soluzione decente (credo sia);

' Eventhandler 
Private Sub DataGridView1_ColumnWidthChanged(sender As Object, e As DataGridViewColumnEventArgs) 

// If my Grid refreshes this event doesnt work properly so I stop it from firing 
    If isRefreshing Then Exit Sub 

    Dim col As DataGridViewColumn = e.Column 
    If col.AutoSizeMode = DataGridViewAutoSizeColumnMode.None Then //optional 
     Dim isWidth As Integer = col.Width 
     Dim prefWidth As Integer = col.GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader, True) 
     If isWidth > prefWidth Then col.Width = prefWidth 
    End If 
End Sub 

In questo caso il mio MaxWidth è il Larghezza Prefferred. Puoi cambiare prefWidth con il massimo che vuoi.

+1

Appena notato è una domanda C# con una risposta vb.net, mi dispiace per quello. Ma dovresti essere in grado di tradurlo. :-) – Luke

Problemi correlati