Question

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

Était-ce utile?

La solution

Vous devriez être en mesure d'atteindre cet objectif en définissant le WrapMode du DefaultCellStyle de votre DataGridViewTextBoxColumn à true.

Autres conseils

J'ai trouvé qu'il ya deux choses que vous devez faire, à la fois dans le concepteur, pour faire un spectacle de cellule de texte de plusieurs lignes. Tim S. Van Haren mentionné, vous devez définir WrapMode du DefaultCellStyle de votre DataGridViewTextBoxColumn à true. Et bien que cela ne rend l'enveloppe de texte, il ne fait pas la ligne d'élargir pour montrer quoi que ce soit au-delà de la première ligne. En plus de WrapMode, le AutoSizeRowsMode du DataGridView doit être réglé sur la valeur d'énumération de DataGridViewAutoSizeRowsMode appropriée. Une valeur telle que DataGridViewAutoSizeRowsMode.AllCells permet à la cellule d'étendre verticalement et montrer l'ensemble du texte enveloppé.

En dehors de la mise en WrapMode du DefaultCellStyle, vous pouvez faire ce qui suit:

  1. Vous devez attraper l'événement EditingControlShowing de GridView
  2. Cast propriété Control sur les EventArgs au type que vous voulez (par exemple zone de texte, case à cocher, ou le bouton)
  3. En utilisant ce type casted, modifiez la propriété 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;
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top