我有一个ListBox,其中填充了由文本文件组成的文件夹中的条目(列表框仅显示文件的名称)。每次添加文件时,我都无法刷新列表框。您可以通过按主程序中的按钮来添加文件/差事,这会显示第二个窗口,您可以在其中编写差事并选择其优先级(低,中或高)。
期望的效果是列表框在添加新的文本文件/差事时会自动更新,包含它,但是,目前情况并非如此,我尝试使用网上的示例进行操作Binding
和foreach
等等,但到目前为止都没有。主程序如下:
P.S。该程序是半瑞典语,但基本上,“Skapa lapp”=“创造差事”,这是唯一重要的一个。
下面这张图片只是为了向您展示列表框和差事/文本文件如何协同工作(文本文件通过private string mappNamn = @"C:\Errands\";
Lapphantering uppdateraFönster = new Lapphantering();
private void buttonSkapaLapp_Click(object sender, EventArgs e)
{
try
{
//When choosing the low priority radio button, do this:
if (radioButtonLågPrio.Checked)
{
using (var file = new StreamWriter(Path.Combine(mappNamn, "1 - " + textBoxLappText.Text + ".txt")))
{
uppdateraFönster.listBoxLappar.Items.Add(textBoxLappText.Text);
uppdateraFönster.Update(); //This doesn't work.
uppdateraFönster.Refresh(); //Nor does this.
}
}
循环添加到列表框中)。
创建新差事(Skapa lapp-button)时,您将看到一个新窗口:
在此窗口中编写新差事并选择优先级然后按“创建差事”(或Skapa lapp)时,按钮单击(简化版)将发生以下情况:
public Lapphantering()
{
InitializeComponent();
//For each file, add new files to the list box.
DirectoryInfo dinfo = new DirectoryInfo(@"C:\Errands\");
FileInfo[] Filer = dinfo.GetFiles("*.txt");
mappNamn = dinfo.FullName;
foreach (FileInfo file in Filer)
{
listBoxLappar.Items.Add(Path.GetFileNameWithoutExtension(file.Name));
}
}
回到主窗口(Lapphantering),只有在重新启动应用程序时才更新列表框,让主程序通过初始化组件来添加文件:
{{1}}
那么,每次添加新的差事/文本文件时如何刷新/更新列表框而不必每次都重新启动应用程序?
答案 0 :(得分:4)
问题是你正在创建一个新的Lapphantering实例并在那里编辑值。在程序cs中更改此内容:
public static Lapphantering mainForm;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
mainForm = new Lapphantering(); // create instance of Lapphantering
Application.Run(mainForm);
}
然后在你的另一个窗口中执行此操作:
if (radioButtonLågPrio.Checked)
{
using (var file = new StreamWriter(Path.Combine(mappNamn, "1 - " + textBoxLappText.Text + ".txt")))
{
Program.mainform.listBoxLappar.Items.Add(textBoxLappText.Text);
Program.mainform.listBoxLappar.Update();
Program.mainform.listBoxLappar.Refresh(); // access mainform in Program
}
}
这应该可以解决你正在编写program.cs中的一个对象
答案 1 :(得分:0)
您正在寻找文件系统监视器。这可能会有所帮助:https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx