WinForm DataGridView 单元格编辑中回车内容换行

C# datagridview 实现单元格内容进行回车换行而不是换另一行数据_c#dgv编辑后不回车到下一行-CSDN博客

表格属性:

            dataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

按键监测:

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Enter)
            {
                System.Windows.Forms.TextBox txt;
                int txtSelectionStart;//光标位置
                string txtText;
                string textSelectionStartLeft = "";//光标位置前文本
                string textSelectionStartRight = "";//光标位置后文本

                if (!dataGridView.IsCurrentCellInEditMode)//表格是否正在编辑中
                {
                    return base.ProcessCmdKey(ref msg, keyData);
                }

                if (dataGridView.EditingControl.GetType() = typeof(DataGridViewTextBoxEditingControl))//获取表格编辑中单元格类型并判断是否为文本框
                {
                    return base.ProcessCmdKey(ref msg, keyData);
                }

                txt = (System.Windows.Forms.TextBox)dataGridView.EditingControl;
                txtSelectionStart = txt.SelectionStart;
                txtText = txt.Text;

                if (txtSelectionStart > 0)
                {
                    textSelectionStartLeft = txtText.Substring(0, txtSelectionStart);//获取换行前光标左侧文字
                }
                if (txtSelectionStart < txtText.Length)
                {
                    textSelectionStartRight = txtText.Substring(txtSelectionStart, txtText.Length - txtSelectionStart);//获取换行前光标右侧文字
                }

                txtText = textSelectionStartLeft + "\r\n" + textSelectionStartRight;//拼接
                txt.Text = txtText;
                dataGridView.CurrentCell.Value = txtText;//有这调语句才会让回车时单元格高度增加
                txt.Select(txtSelectionStart + 2, 0);//因为加了\r\n所以+2

                return true;
            }
            else
            {
                return base.ProcessCmdKey(ref msg, keyData);
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值