Cómo establecer la columna de texto DataGridView a la multi-línea?
-
21-09-2019 - |
Pregunta
Cómo dejar "DataGridViewTextBoxColumn
" en DataGridView
soporta propiedad Multiline
Solución
Usted debe ser capaz de lograr esto mediante el establecimiento de la WrapMode
del DefaultCellStyle
de su DataGridViewTextBoxColumn
a true
.
Otros consejos
He descubierto que hay dos cosas que tiene que hacer, tanto en el diseñador, para hacer una presentación de celda de texto múltiples líneas. Como Tim S. Van Haren se ha mencionado, es necesario configurar WrapMode
del DefaultCellStyle
de su DataGridViewTextBoxColumn
a true
. Y a pesar de que hace que el ajuste de texto, no hacen la fila expandir para mostrar algo más allá de la primera línea. Además de WrapMode
, la AutoSizeRowsMode
de la DataGridView
debe establecerse en el valor DataGridViewAutoSizeRowsMode
enumeración apropiado. Un valor tales como DataGridViewAutoSizeRowsMode.AllCells
permite a la célula para expandir verticalmente y mostrar todo el texto ajustado.
Además de establecer WrapMode
del DefaultCellStyle
, puede hacer lo siguiente:
- Es necesario coger Evento
EditingControlShowing
de GridView - Reparto propiedad
Control
en los EventArgs al tipo que desee (es decir, cuadro de texto, casilla de verificación, botón o) - El uso de ese tipo fundido, cambie la propiedad
Multiline
, como a continuación:
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;
}