Messagebox.show строки, кажется, изменяет строку
Привет,
Я пишу код для исправления ошибки в цифровом сканере, который иногда читает 2 как ">".
Если сканер содержит этот неправильный символ, то будет выполнен приведенный ниже код:
if ((string)row.Cells[1].Value != txtScannedIn.Text.Trim()) { string editedtext; editedtext = ScanFix(txtScannedIn.Text, (string)row.Cells[1].Value); txtScannedIn.Text = editedtext; }
Метод, который он использует для исправления кода, заключается в следующем:
private string ScanFix(string NotFound, string rightpart) { string replacer; if (NotFound.Contains('>')) { replacer = NotFound.Replace('>', '2'); if (replacer == rightpart) { MessageBox.Show(replacer + " " + rightpart); return replacer; } else return NotFound; } else { return NotFound; } }
Эти два сегмента кода работают точно так, как они должны работать при выполнении таким образом, однако когда я пытаюсь заставить первый блок кода отображать MessageBox с обновленной строкой "editedtext", messagebox отображает исходное неверное сканирование с ">" в нем.
if ((string)row.Cells[1].Value != txtScannedIn.Text.Trim()) { string editedtext; editedtext = ScanFix(txtScannedIn.Text, (string)row.Cells[1].Value); MessageBox.Show(editedtext); //this displays the originally wrong scan with the ">" instead of the corrected 2. Without this single MessageBox line the code runs properly and the > is replaced. txtScannedIn.Text = editedtext; }
Что я уже пробовал:
Я попытался создать отдельную переменную, чтобы установить строку editedtext равной, а затем отобразить ее (если она работает, когда я объявляю txtScannedIn.Почему бы ему не разрешить использовать эту переменную?), и я вставил команды MessageBox в другие области кода, чтобы определить, выполняются ли они (насколько я понимаю, включая этот messagebox вне метода ScanFix, он изменяет его, чтобы вернуть исходное значение NotFound).
Одна вещь, которая действительно позволяла messagebox отображать правильную строку scan/ editedtext для правильного обновления, заключалась в том, что окно сообщения
Ящик для сообщений.Show(editedtext = ScanFix(txtScannedIn.Text, (string)row.Ячейки[1].Значение));
Я никогда не использовал этот форум, но я не могу найти ни одного документированного случая этой проблемы, и ничто из того, что я пробовал, не позволяет Messagebox просто отображать возврат фиксированного сканирования правильным образом. Если кто-нибудь увидит это и знает, как это исправить, я буду очень признателен вам за помощь.
Спасибо