2009-10-13 7 views

Répondre

60

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

+14

vous devez également définir 'dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;' voir [ce poste] (http://stackoverflow.com/questions/1706454/c-multiline-text-in-datagridview-control) – BornToCode

+0

Rappelez-vous Si vous utilisez des styles de cellule personnalisés dans votre table, vous devrez spécifier le WrapMode pour chacun des wraps que vous souhaitez appliquer, car les nouveaux styles le définissent par défaut sur false. – kjhf

3

Outre la mise WrapMode du DefaultCellStyle, vous pouvez effectuer les opérations suivantes:

  1. Vous devez attraper GridView de EditingControlShowing événement
  2. Cast Control propriété sur les EventArgs du type que vous voulez (c.-à-zone de texte, case à cocher ou 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;    
} 
26

J'ai trouvé qu'il y a deux choses que vous devez faire, à la fois dans le concepteur, pour qu'une cellule de texte affiche plusieurs lignes. Comme Tim S. Van Haren mentionné, vous devez définir WrapMode du DefaultCellStyle de votre DataGridViewTextBoxColumn à true. Et bien que cela fasse du texte, cela ne fait pas que la ligne se développe pour montrer quelque chose au-delà de la première ligne. En plus de WrapMode, le AutoSizeRowsMode du DataGridView doit être défini sur la valeur d'énumération DataGridViewAutoSizeRowsMode appropriée. Une valeur telle que DataGridViewAutoSizeRowsMode.AllCells permet à la cellule de se développer verticalement et d'afficher tout le texte encapsulé.

+4

Pour référence, 'AutoSizeRowsMode' est une propriété de' DataGridView', et doit être défini sur quelque chose comme 'DataGridViewAutoSizeRowsMode.AllCells' –

+0

Comme l'a déclaré @BenScott, [' DataGridView.AutoSizeRowsMode'] (http: // msdn. microsoft.com/en-us/library/system.windows.forms.datagridview.autosizerowsmode%28v=vs.110%29.aspx) n'est pas une valeur booléenne et doit recevoir la valeur d'énumération 'DataGridViewAutoSizeRowsMode' appropriée. Je vais modifier la réponse pour refléter cela. –

Questions connexes