dataGrid ビューで文字列のリストを強調表示しようとしています。この目的のために、dataGridView でキーワードを強調表示する既存のコードを使用しました。ただし、結果のコードは、リストの最後の出現 (つまり、最後にフェッチされたレコード) のみを強調表示します。これが私が試したことです
private void dvg_ClauseSent_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
foreach (string sw in HighlightStrings) // HighlightStringsis the list of string containing all strings I need to highlight in DataGrid view
{
int strt = 0;
int cnt = -1;
int idx = -1;
TextFormatFlags flags = TextFormatFlags.Default | TextFormatFlags.NoPrefix;
if ((((e.RowIndex >= 0) && (e.ColumnIndex >= 0))))
{
e.Handled = true;
e.PaintBackground(e.CellBounds, true);
if (!string.IsNullOrEmpty(sw))
{
string val = e.FormattedValue.ToString();
int sindx = val.IndexOf(sw);
if ((sindx >= 0))
{
while (strt != -1)
{
strt = val.IndexOf(sw, idx + 1);
cnt += 1;
idx = strt;
if (strt != -1)
{
if (strt != 0 && ((strt + sw.Length) != val.Length))
{
Rectangle hl_rect = new Rectangle();
hl_rect.Y = (e.CellBounds.Y + 2);
hl_rect.Height = (e.CellBounds.Height - 5);
// find the size of the text before the search word
// and the size of the search word
// paint the background behind the search word
e.Graphics.FillRectangle(hl_brush, hl_rect);
hl_brush.Dispose();
}
}
}
}
}
}
// paint the content as usual
e.PaintContent(e.CellBounds);
}
}
添付のスクリーンショット
次のスクリーンショットは、dataGridView http://i42.tinypic.com/2dtrea1.pngで強調表示される文字列を示しています。
|* / *| が前後にある ANGLE BRACKET で囲まれた文字列の一部 強調表示されているはずですが、最後のエントリのみが強調表示されています。 http://i39.tinypic.com/30cbw9l.png
どんな助けでも大歓迎です...