public static void SearchDataGridView(this DataGridView dgv, string searchString = null) { if (string.IsNullOrEmpty(searchString)) { FormSearchText form = new FormSearchText(); form.ShowDialog(); searchString = form.Result; } if (string.IsNullOrEmpty(searchString)) { return; } if (dgv.Rows.Count == 0 || dgv.ColumnCount == 0) { return; } bool rowFound = false; if (dgv.DataSource is DataTable) { var dt = dgv.DataSource as DataTable; if (!dt.Columns.Contains("Match_Result")) { dt.Columns.Add("Match_Result", typeof(String)); dt.Columns["Match_Result"].SetOrdinal(0); dgv.DataSource = null; dgv.DataSource = dt; } } else { if (!dgv.Columns.Contains("Match_Result")) { DataGridViewCell cell = new DataGridViewTextBoxCell(); DataGridViewColumn column = new DataGridViewColumn(); column.CellTemplate = cell; column.Name = "Match_Result"; column.ValueType = typeof(bool); dgv.Columns.Add(column); column.DisplayIndex = 0; } } foreach (DataGridViewRow row in dgv.Rows) { rowFound = false; row.Cells["Match_Result"].Value = ""; foreach (DataGridViewCell cell in row.Cells) { if (rowFound == true) { continue; } if (cell.Value == null) { continue; } var value = cell.Value.ToString(); if (Regex.IsMatch(value, searchString)) { // cell.Style.ForeColor = System.Drawing.Color.Blue; rowFound = true; //cell.Style.BackColor = System.Drawing.Color.Black; break; } else { // cell.Style.ForeColor = System.Drawing.Color.Black; } } if (rowFound == true) { row.Cells["Match_Result"].Value = "match"; row.Selected = true; } //else //{ // row.Cells["Match_Result"].Value = ""; // //row.Cells["SearchResult"].Value = "UnMatch"; //} // dgv.Sort(dgv.Columns["SearchResult"],System.ComponentModel.ListSortDirection.Ascending); } dgv.Refresh(); }