У меня есть 2 формы, которые я назову Form1 и Form2.В Form1 есть следующий код:
public void PrinterDD()
{
printer.Items.Clear();
string sprinters = @"filepath";
using (StreamReader reader = new StreamReader(sprinters))
try
{
while (!reader.EndOfStream)
{
string strPrnItem = reader.ReadLine();
MessageBox.Show(strPrnItem); //just here for troubleshooting purposes
printer.Items.Add(strPrnItem);
}
}
finally
{
reader.Close();
printer.Update();
printer.SelectedIndex = 0;
}
}
Этот метод вызывается первым, когда загружается Form1.Поле со списком («принтер») заполнено правильно.
В Form2 у меня есть метод для записи в файл и изменения его:
private void accept_Click(object sender, EventArgs e)
{
this.AcceptButton = accept;
if (selectedprinters != null && selectedprinters.Items != null && selectedprinters.Items.Count > 0)
{
File.Delete(sprinters);
StreamWriter writer = new StreamWriter(sprinters);
try
{
foreach (object item in selectedprinters.Items)
{
writer.WriteLine(item.ToString());
}
}
finally
{
writer.Close();
Voicemails.PrinterDD();
}
}
this.Close();
}
Строка Voicemails.PrinterDD();
запускает методиз формы 1 выше.При пошаговом выполнении кода все работает нормально;без ошибок, текстовый файл записывается с новыми значениями.Но выпадающий список никогда не обновляется и не обновляется, чтобы показать новые строки.
Что я делаю не так?
РЕДАКТИРОВАТЬ.Я попытался printer.Refresh();
вместо printer.Update();
в коде Form1.
пс.Файл, который я использую, является текстовым файлом, поэтому я не думаю, что смогу связать с ним комбинированный список, поэтому я не думаю, что можно выполнить printer.DataSource = null
, а затем повторно связать его.