Я хочу сравнить 2 файла с помощью RichTextBoxes и загрузить их в новые RichTextBoxes с определенным текстом, который одинаков для зеленого, и другим текстом для красного.
Что я имею в виду:
ДОКУМЕНТ 1
C1 147417 111.111 222.222 0 TEXT
U13 IC-123456 1234 9876 360 TEXT
R123 13866 -99.9 123.456 100 TEXT
U24 IC-123456 -14 -50 90 TEXT
............more lines............
ДОКУМЕНТ 2
1 U13 IC-123456 SOMETEXT 1.00 EA P C n Y
EC5547,3-UP 50
1 U24 IC-123456 SOMETEXT 1.00 EA P C n Y
EC5547,3-UP 50
1 C1 147417 TEXT 2.00 EA P C n Y
0603,EC0303 50
1 R123 138666 MORETEXT 2.00 EA P C n Y
50
......................more lines..........................
И я бы хотел сопоставить 1-й и 2-й столбцы в первом файле, чтобы увидеть, существуют ли они в какой-либо строке во втором файле. Если они совпадают, совпадающие элементы сделают соответствующий текст зеленым, а все остальное красным.
- Есть ли в любом случае, чтобы сделать это?
- Как можно сравнить 1-е с столбцами в другом файле?
- Можно ли изменить цвет текста в RTB, а не во всей строке?
EDIT:
private void checkMatchesInGCandBOM()
{
// Splits the text up to compare with the other text.
var combinedSplit = combinedPlacementsRichTextBox.Text.Split('\n');
string[] splitLines;
foreach (var line in combinedSplit)
{
Match theMatch = Regex.Match(line, @"^.*");
if (theMatch.Success)
{
// Stores the matched value in string output.
string output = theMatch.Value;
// Replaces the tabs with spaces.
output = Regex.Replace(output, @"\s+", " ");
splitLines = output.Split(' ');
int pos = 0, pos2 = 0;
pos = bomRichTextBox.Find(splitLines[0], pos, RichTextBoxFinds.MatchCase);
pos2 = bomRichTextBox.Find(splitLines[1], pos2, RichTextBoxFinds.MatchCase);
while (pos != -1)
{
if (bomRichTextBox.SelectedText == splitLines[0] && bomRichTextBox.SelectedText != "")
{
int my1stPosition = bomRichTextBox.Find(splitLines[1]);
bomRichTextBox.SelectionStart = my1stPosition;
bomRichTextBox.SelectionLength = splitLines[0].Length;
bomRichTextBox.SelectionFont = new System.Drawing.Font("Arial", 8, FontStyle.Underline);
bomRichTextBox.SelectionColor = Color.Green;
}
pos = bomRichTextBox.Find(splitLines[0], pos + 1, RichTextBoxFinds.MatchCase);
}
while (pos2 != -1)
{
if (bomRichTextBox.SelectedText == splitLines[1] && bomRichTextBox.SelectedText != "")
{
int my1stPosition = bomRichTextBox.Find(splitLines[0]);
bomRichTextBox.SelectionStart = my1stPosition;
bomRichTextBox.SelectionLength = splitLines[1].Length;
bomRichTextBox.SelectionFont = new System.Drawing.Font("Arial", 8, FontStyle.Underline);
bomRichTextBox.SelectionColor = Color.Blue;
}
pos2 = bomRichTextBox.Find(splitLines[1], pos2 + 1, RichTextBoxFinds.MatchCase);
}
}
}
Однако, похоже, это не работает должным образом ....!
Все крайние левые столбцы должны были быть ПОЛНОСТЬЮ зелеными, но по некоторым причинам некоторые черные, а некоторые черные и зеленые. Также в следующем столбце нужно было найти все и изменить цвет на синий. Так получилось, используя приведенный выше код.
Новый скриншот того, что происходит.