C#DataGridView单元格可以是多行还是单行?

C#DataGridView单元格可以是多行还是单行?,c#,datagridview,C#,Datagridview,我正在动态构建DataGridView,文本框可能有一个与之关联的自动完成自定义源。在某些情况下,当我将textbox.Multiline设置为true时,会得到以下效果。如果我没有主动编辑单元格,则如下所示: 但是,如果我尝试编辑单元格,它看起来是这样的: 如果在编辑模式单元格周围移动光标,焦点将完全跳出单元格,而不是移动文本或扩展单元格高度。看起来好像它试图同时处于多行和单行模式,但我不确定 有什么想法吗?我找到了解决办法——不是根本原因。在EditingControlShowing中,

我正在动态构建DataGridView,文本框可能有一个与之关联的自动完成自定义源。在某些情况下,当我将textbox.Multiline设置为true时,会得到以下效果。如果我没有主动编辑单元格,则如下所示:

但是,如果我尝试编辑单元格,它看起来是这样的:

如果在编辑模式单元格周围移动光标,焦点将完全跳出单元格,而不是移动文本或扩展单元格高度。看起来好像它试图同时处于多行和单行模式,但我不确定


有什么想法吗?

我找到了解决办法——不是根本原因。在EditingControlShowing中,我执行以下操作:

textBox.Dock = textBox.Multiline ? DockStyle.Fill : DockStyle.None;
其中我设置了
textBox=(textBox)e.Control


这是一个大锤式的解决方案,但它可以工作。

让我们为DataGridView对象命名:dgv, 因此,在dgv_CellEnter事件上添加以下行

int idxcol = dgv.Columns["YourColumnName"].Index;
            if (e.ColumnIndex == idxcol)
                dgv.Columns[idxcol].DefaultCellStyle.WrapMode = DataGridViewTriState.False;
int idxcol = dgv.Columns["YourColumnName"].Index;
if (e.ColumnIndex == idxcol )
            {
                dgv.Columns[e.ColumnIndex].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            }
在dgv_CellLeave事件上添加以下行

int idxcol = dgv.Columns["YourColumnName"].Index;
            if (e.ColumnIndex == idxcol)
                dgv.Columns[idxcol].DefaultCellStyle.WrapMode = DataGridViewTriState.False;
int idxcol = dgv.Columns["YourColumnName"].Index;
if (e.ColumnIndex == idxcol )
            {
                dgv.Columns[e.ColumnIndex].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            }

查看如何使用datagridview ItemTemplates您可以使用多行文本框来执行此操作,例如Update:问题似乎是datagridview中文本框的位置设置为(3,49)而不是(0,0)。但是,试图将其强制到
新点(0,0)
并不能给我带来任何好处。我遇到过微软的错误吗?