2009-10-13 10 views

risposta

60

Si dovrebbe essere in grado di ottenere questo impostando il WrapMode del DefaultCellStyle del DataGridViewTextBoxColumn a true.

+14

è inoltre necessario impostare 'dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;' consultare [questo post] (http://stackoverflow.com/questions/1706454/c-multiline-text-in-datagridview-control) – BornToCode

+0

Ricorda che se si usano stili di cella personalizzati nella tabella, sarà necessario specificare WrapMode per ognuno di essi che si desidera eseguire il wrapping, poiché i nuovi stili lo impongono automaticamente come falso. – kjhf

3

A parte l'impostazione WrapMode del DefaultCellStyle, è possibile effettuare le seguenti operazioni:

  1. avete bisogno di recuperare EditingControlShowing evento di GridView
  2. Fusioni Control proprietà sulle EventArgs per il tipo desiderato (ad esempio testo, checkbox , o il pulsante)
  3. Usando quel tipo colato, modificare la proprietà Multiline come di seguito:
private void MyGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    TextBox TB = (TextBox)e.Control; 
    TB.Multiline = true;    
} 
26

Ho scoperto che ci sono due cose che devi fare, sia nella finestra di progettazione, per fare in modo che una cella di testo mostri più linee. Come Tim S. Van Haren menzionato, è necessario impostare WrapMode del DefaultCellStyle del DataGridViewTextBoxColumn a true. E anche se ciò rende il testo a capo, non fa espandere la riga per mostrare qualcosa oltre la prima riga. Oltre a WrapMode, è necessario impostare DataGridViewAutoSizeRowsMode il valore di enumerazione dello dello DataGridView. Un valore come DataGridViewAutoSizeRowsMode.AllCells consente alla cella di espandersi verticalmente e mostrare l'intero testo spostato.

+4

Per riferimento, 'AutoSizeRowsMode' è una proprietà di' DataGridView' e deve essere impostato su qualcosa come 'DataGridViewAutoSizeRowsMode.AllCells' –

+0

Come dichiarato da @BenScott,' 'DataGridView.AutoSizeRowsMode'] (http: // msdn. microsoft.com/en-us/library/system.windows.forms.datagridview.autosizerowsmode%28v=vs.110%29.aspx) non è un valore booleano e deve essere assegnato il valore di enumerazione 'DataGridViewAutoSizeRowsMode' appropriato. Modificherò la risposta per riflettere questo. –

Problemi correlati