【发布时间】:2014-04-14 20:53:41
【问题描述】:
就是这种情况:我想通过循环 Rows 在整个 DataGridView 中搜索一个单词,然后对于每个匹配项,我都会突出显示该单词。我面临的主要不灵活性是列有不同的System.Windows.Forms.DataGridViewContentAlignments。因此,在单元格中绘制(突出显示)数学单词时,我应该注意单元格的ContentAlignment。
到目前为止,我已经编写了以下代码来查找匹配项
private int FindAllMatches()
{
int itemsFound = 0;
for (int r = 0; r < dgvMain.Rows.Count; r++)
{
DataGridViewRow row = dgvMain.Rows[r];
for (int c = 0; c < Columns.Count; c++)
{
string cellValue = (dgvMain.Rows[r].Cells[c].Value ?? "").ToString();
if (cellValue.Contains(SearchValue.ToString()))
{
HighlightRow(row); // highlights whole row, weak solution
itemsFound++;
break;
}
}
}
return itemsFound;
}
但正如您所见,我目前已设法突出显示至少有一个匹配项的行。我需要一个代码来仅突出显示与我的特定单词匹配的单元格部分(SearchValue)。
我知道我应该使用CellPainting 事件,但考虑到Cell 的ContentAlignment,我不知道如何在Cell 内绘制单词
【问题讨论】:
-
我已回复similar question
-
嗨@Junaith,在过去的几周里,我一直在询问
DataGridView,你一直在回答他们:) 我认为我们应该一起创业;)开玩笑。我会检查它并在几分钟内通知您... -
我有一个问题@Junaith,你的代码适合英文文本,但我的语言是波斯语,是在
RightToLeft方向编写的。使用Current Answer you have provided,我的文本显示错误,例如,如果我的单元格文本是 'نصب قفل سخت افزاری',则显示为 'فزاری نصب قفل سخت ا'
标签: c# winforms datagridview highlighting paintevent