Не обновляется текст в Windows Forms C#
У меня есть проект(.Net FrameWork 4.7.2) с разными Формами(Windows).
Одна из форма называется Settings. В данной форме я предусмотрел кнопку для локализации программы. При нажатии на кнопку программа изменяет текст кнопок только на данной форме, а к остальным формам даже не притрагивается.
Объявление класса:
public partial class Settings : UserControl
Код кнопки:
public void UpdateLang(string _currentLanguage)
{
Analyze analyze = new Analyze();
Graph graph = new Graph();
Thread AnalyzeThread = new Thread(() => analyze.ChangeLanguage(_currentLanguage));
Thread GraphThread = new Thread(() => graph.ChangeLanguage(_currentLanguage));
AnalyzeThread.Start();
GraphThread.Start();
MainPage mainpage = new MainPage();
mainpage.ChangeLanguage(_currentLanguage);
ChangeLanguage(_currentLanguage);
}
Код смены языка:
private void ChangeLanguage(string _currentLanguage)
{
XmlDocument xml = new XmlDocument();
Excel excel = new Excel();
string XmlFilePath = $@"{excel.GetExcelFileDirectory()}\settings.xml";
xml.Load(XmlFilePath);
XmlElement element = xml.DocumentElement;
foreach (XmlNode xnode in element)
{
if (xnode.Attributes.Count > 0)
{
XmlNode attr;
attr = xnode.Attributes.GetNamedItem("countrylanguage");
if (attr != null && attr.Value.Contains(_currentLanguage))
{
foreach (XmlNode childnode in xnode.ChildNodes)
{
if (childnode.Name == CreateNewTableBtn.Name)
{
CreateNewTableBtn.Text = childnode.InnerText;
}
else if (childnode.Name == NewTableNameLabel.Name)
{
NewTableNameLabel.Text = childnode.InnerText;
}
}
break;
}
}
}
}
Каждый класс имеет данную функцию, но повторюсь, она работает исключительно в этом классе, а в Analyze, Graph и т.д. - не выполняется. Если убирать работу потоков, то так же ничего не происходит.
Так же есть вторая проблема. При выполнении программы она записывает рекомендуемые действия в коллекцию.
Notifications NotRichTextBox = new Notifications();
NotRichTextBox.AppendTextToNotificationsList($"[{excel.ReadCell(line, 8)}]{Shower}");
Реализация:
public void AppendTextToNotificationsList(string Text)
{
TextForRicheTextBox.Add(Text);
}
Но после окончания выполнения анализа почему-то не срабатывает метод:
Notifications NotRichTextBoxAdd = new Notifications();
NotRichTextBoxAdd.AddTextToRichBox();
Реализован он так:
public void AddTextToRichBox()
{
foreach (var element in TextForRicheTextBox)
{
RichTextBoxImprovments.AppendText(element + '\n');
}
}