Comment laisser "DataGridViewTextBoxColumn
" dans DataGridView
prend en charge la propriété multiligne ?
Vous devriez pouvoir y parvenir en définissant la WrapMode
de la DefaultCellStyle
de votre DataGridViewTextBoxColumn
à true
.
J'ai constaté qu'il fallait faire deux choses, à la fois dans le concepteur, pour faire en sorte qu'une cellule de texte affiche plusieurs lignes. Comme Tim S. Van Haren mentionné, vous devez définir WrapMode
sur DefaultCellStyle
de votre DataGridViewTextBoxColumn
à true
. Et bien que le texte soit renvoyé à la ligne, cela ne permet pas à la ligne de s’étendre pour afficher quoi que ce soit au-delà de la première ligne. En plus de WrapMode
, la AutoSizeRowsMode
de la DataGridView
doit être définie sur la valeur d'énumération DataGridViewAutoSizeRowsMode
appropriée. Une valeur telle que DataGridViewAutoSizeRowsMode.AllCells
permet à la cellule de s’étendre verticalement et d’afficher le texte entier enveloppé.
En plus de définir WrapMode
sur DefaultCellStyle
, vous pouvez effectuer les opérations suivantes:
EditingControlShowing
de GridViewControl
sur les EventArgs selon le type souhaité (zone de texte, case à cocher ou bouton)Multiline
comme ci-dessous: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;
}