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

时间:2016-02-16 19:45:29

标签: c# datagridview

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

This is the selected, but unedited cell

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

This is the cell in edit mode

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

textBox.Dock = textBox.Multiline ? DockStyle.Fill : DockStyle.None;

我已设置textBox = (TextBox) e.Control;

它是一个大锤解决方案,但它确实有效。

答案 1 :(得分:0)

让我们给DataGridView对象命名:dgv, 所以在dgv_CellEnter事件中添加以下行

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

并在dgv_CellLeave事件中添加以下行

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