Come impostare colonna di testo DataGridView a multi-line?
-
21-09-2019 - |
Domanda
Come far "DataGridViewTextBoxColumn
" in DataGridView
supporta proprietà Multiline
Soluzione
Si dovrebbe essere in grado di raggiungere questo impostando il WrapMode
del DefaultCellStyle
del vostro DataGridViewTextBoxColumn
a true
.
Altri suggerimenti
Ho scoperto che ci sono due cose che devi fare, sia nella finestra di progettazione, di fare uno spettacolo cella di testo su più righe. Come Tim S. Van Haren accennato, è necessario impostare WrapMode
della DefaultCellStyle
del vostro DataGridViewTextBoxColumn
a true
. E anche se che fa rendere l'involucro del testo, non fare la fila espande per mostrare qualcosa al di là della prima linea. Oltre a WrapMode
, il AutoSizeRowsMode
del DataGridView
deve essere impostato al valore di enumerazione DataGridViewAutoSizeRowsMode
appropriato. Un valore come DataGridViewAutoSizeRowsMode.AllCells
permette alla cellula di espandere verticalmente e visualizza intero testo avvolto.
A parte l'impostazione WrapMode
del DefaultCellStyle
, è possibile effettuare le seguenti operazioni:
- È necessario prendere
EditingControlShowing
evento di GridView - proprietà
Control
Avviare le EventArgs al tipo desiderato (vale a dire di testo, checkbox, o il pulsante) - Utilizzo di 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;
}
int multilineht = 0;
private void CustGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
multilineht = CustGridView.Rows[CustGridView.CurrentCell.RowIndex].Height;
CustGridView.AutoResizeRow(CustGridView.CurrentCell.RowIndex, DataGridViewAutoSizeRowMode.AllCells);
}
private void CustGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
CustGridView.Rows[CustGridView.CurrentCell.RowIndex].Height = multilineht;
}