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

本文关键字:删除 换行 字符 DataGridView 输入 | 更新日期: 2023-09-27 18:01:45

我在生产中有一个c# DataGridView,用户有时将字符串粘贴到其中。在某些情况下,这些字符串包含换行符(回车符),这会影响后续的处理。我希望在输入或粘贴字符串时自动从字符串中删除这些字符。

我正在查看CellParsing事件作为问题的解决方案,但不想搞砸所有其他处理(这是一个相当复杂的网格)。这是解决问题的合适方法吗?

谢谢。

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

如果您的数据网格视图绑定到数据源,那么您想要做的唯一方法是删除数据集中不需要的新行,即在数据映射器/翻译层中。

如果您手动添加行,您可以使用.Replace:

逐个替换.Add循环中不需要的新行。
const string NewlineReplacement = " ";
dataGridView1.Rows.Add(col1Value.Replace(Environment.NewLine, NewlineReplacement),
                       col2Value.Replace(Environment.NewLine, NewlineReplacement));

可以使用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;