【发布时间】:2012-01-11 23:36:55
【问题描述】:
我有 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(); 行运行上面 Form1 中的方法。单步执行代码时,一切似乎都正常;没有错误,文本文件确实使用新值写入。但组合框从未真正更新/刷新以显示新字符串。
我做错了什么?
编辑。我在 Form1 代码中尝试了 printer.Refresh(); 而不是 printer.Update();。
ps。我正在使用的文件是一个文本文件,所以我认为我无法将组合框绑定到它,所以我不认为做printer.DataSource = null 然后重新绑定它会起作用。
【问题讨论】:
-
请不要在您的问题标题前加上“C#”。这就是标签的用途?
-
Voicemails对象是什么?是Form1的实例吗? -
对不起。 Voicemails 是 Form1 的实际类名。为了简单起见,我只是说 Form1