【发布时间】:2009-10-13 12:19:41
【问题描述】:
如何让DataGridView中的“DataGridViewTextBoxColumn”支持多行属性?
【问题讨论】:
标签: c# .net datagridview datagridviewcolumn
如何让DataGridView中的“DataGridViewTextBoxColumn”支持多行属性?
【问题讨论】:
标签: c# .net datagridview datagridviewcolumn
您应该可以通过将DataGridViewTextBoxColumn 的DefaultCellStyle 的WrapMode 设置为true 来实现此目的。
【讨论】:
dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;见this post
我发现你需要在设计器中做两件事,以使文本单元格显示多行。正如Tim S. Van Haren所述,您需要将DefaultCellStyle 的WrapMode 的WrapMode 设置为true。尽管这确实使文本换行,但它不会使行扩展以显示第一行以外的任何内容。除了WrapMode,DataGridView 的AutoSizeRowsMode 必须设置为适当的DataGridViewAutoSizeRowsMode 枚举值。 DataGridViewAutoSizeRowsMode.AllCells 之类的值允许单元格垂直扩展并显示整个换行的文本。
【讨论】:
AutoSizeRowsMode 是DataGridView 的属性,需要设置为DataGridViewAutoSizeRowsMode.AllCells 之类的东西
DataGridView.AutoSizeRowsMode 不是布尔值,必须分配适当的DataGridViewAutoSizeRowsMode 枚举值。我将编辑答案以反映这一点。
除了设置DefaultCellStyle 的WrapMode 之外,您还可以执行以下操作:
EditingControlShowing事件Control 属性转换为您想要的类型(即文本框、复选框或按钮)Multiline 属性,如下所示: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;
}
【讨论】:
如果您只想为 DataGridView 的一列设置 Multiline 属性
你可以做
dataGridView.Columns[0].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
【讨论】: