web-dev-qa-db-fra.com

Comment définir la colonne de zone de texte DataGridView sur multiligne?

Comment laisser "DataGridViewTextBoxColumn" dans DataGridView prend en charge la propriété multiligne ?

40
Wahid Bitar

Vous devriez pouvoir y parvenir en définissant la WrapMode de la DefaultCellStyle de votre DataGridViewTextBoxColumn à true.

65
Tim S. Van Haren

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é.

29
Tom Faust

En plus de définir WrapMode sur DefaultCellStyle, vous pouvez effectuer les opérations suivantes:

  1. Vous devez intercepter l'événement EditingControlShowing de GridView
  2. Convertissez la propriété Control sur les EventArgs selon le type souhaité (zone de texte, case à cocher ou bouton)
  3. En utilisant ce type, changez la propriété Multiline comme ci-dessous:
private void MyGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    TextBox TB = (TextBox)e.Control;
    TB.Multiline = true;            
}
4
usman Majeed
    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;
    }
0
Pavan M