如何从输入C#DataGridView中删除换行符?

时间:2016-08-09 15:03:36

标签: c# datagridview

我在制作中有一个C#DataGridView,用户有时会粘贴字符串。有些百分比的时间,这些字符串包含换行符(回车符),这会导致进一步处理。我想在输入或粘贴时自动从字符串中删除这些字符。

我正在将CellParsing事件视为问题的解决方案,但不想弄乱我的所有其他处理(它是一个相当复杂的网格)。这是解决问题的适当方法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

如果您的数据网格视图绑定到数据源,那么执行所需操作的唯一方法是删除数据集中不需要的新行,即在数据映射器/转换层中。

如果您手动添加行,则可以使用.Add逐个替换.Replace循环中不需要的新行:

const string NewlineReplacement = " ";

dataGridView1.Rows.Add(col1Value.Replace(Environment.NewLine, NewlineReplacement),
                       col2Value.Replace(Environment.NewLine, NewlineReplacement));

答案 1 :(得分:0)

您可以使用CurrentCellDirtyStateChange事件。

事件将在用户更改 之后引发

请参阅我编写的示例,该示例还说明了如何提取所请求单元格的列和行。

private void datagridview1_CurrentCellDirtyStateChanged(Object sender, EventArgs e)

    {
        int rowNum = ((DataGridView)sender).CurrentCell.RowIndex;
        int colNum = ((DataGridView)sender).CurrentCell.ColumnIndex;

        // do here what ever you wish: Replace, Trim, etc...
         dataGridView1.Rows[rowNum].Cells[colNum].Value = dataGridView1.Rows[rowNum].Cells[colNum].Value + "...";
    }

另外,不要忘记为DataGridView添加处理程序:

dataGridView1.CurrentCellDirtyStateChanged += datagridview1_CurrentCellDirtyStateChanged;