2016-08-09 209 views
-1

Ich habe eine C# Datagridview in der Produktion, in die Benutzer manchmal Strings einfügen. In einigen Zeitabschnitten enthalten diese Strings Zeilenumbrüche (Zeilenumbrüche), die die Verarbeitung auf der ganzen Linie behindern. Ich möchte diese Zeichen automatisch aus den Zeichenfolgen entfernen, wenn sie eingegeben oder eingefügt werden.Wie kann ich Newline-Zeichen aus der Eingabe in ein C# DataGridView entfernen?

Ich betrachte die CellParsing Veranstaltung als Lösung für das Problem, will aber nicht alle meine andere Verarbeitung versauen (es ist ein ziemlich komplexes Netz). Ist das die richtige Lösung für das Problem?

Danke.

+0

Wie fügen Sie Zeilen? Manuell? Oder über Datenquelle? –

+0

Ich füge in diesem Fall keine Zeilen hinzu, sondern bearbeite nur vorhandene Zeilen. –

Antwort

0

Wenn Ihre Datenrasteransicht an eine Datenquelle gebunden ist, können Sie nur die unerwünschten neuen Zeilen in Ihrem Datensatz entfernen, z. B. in Ihrem Data Mapper/Translation Layer.

Wenn Sie Zeilen manuell sind hinzufügen, können Sie die unerwünschten neue Zeilen in Ihrer .Add Schleife one-by-one mit .Replace ersetzen:

const string NewlineReplacement = " "; 

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

Sie die CurrentCellDirtyStateChange Veranstaltung nutzen können.

das Ereignis wird nach jede Zelle durch den Benutzer ändern.

siehe das Beispiel schrieb ich, dass auch gezeigt, wie die Spalte und Zeile der angeforderten Zelle zu extrahieren.

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 + "..."; 
    } 

auch, vergessen Sie nicht, Handler hinzufügen für Sie Datagridview:

dataGridView1.CurrentCellDirtyStateChanged += datagridview1_CurrentCellDirtyStateChanged;