如何使用C#从主窗体中将文件添加到listView?

时间:2015-11-02 00:53:41

标签: c# forms winforms listview

我有一个C#中的软件,它有一个主窗体(意思是当你启动几乎每个软件都有的软件时打开的窗体)。但是,主窗体会打开一个名为ProjectFiles的表单。我想知道是否可以从主窗体向listView中的ProjectFiles添加文件。我试过在互联网上搜索如何做到这一点,但每个人都在问如何以不同的方式做到这一点。我也试过没有帮助这样做,所以这里是我的代码,但问题是当我使用这段代码时,软件将停止响应。

主要形式:

public string[] lines { get; set; }
void projectFilesToolStripMenuItem1_Click(object sender, EventArgs e)
{
    if (this.parentForm == null)
      {
        return;
      }
    if(opfd.ShowDialog()==DialogResult.OK)
    {
        string[]lines = File.ReadAllLines(opfd.FileName);
    }
}

ProjectFiles:

void label1_Click(object sender, EventArgs e)
{
    MainForm mf = new MainForm();
    {
        string[] lines = File.ReadAllLines(mf.lines.ToString());
        foreach (string line in lines)
        {
            listView1.Items.Add(line);
        }
    }
}

非常感谢任何帮助。谢谢!

编辑: 我被要求更准确地发布错误的内容。就像我上面说的那样,软件变得灰暗,一个消息框显示它已经停止响应。如果这还不够清楚,请告诉我。

编辑:我已经尝试了以下asnwers但软件仍然继续做同样的事情。对软件来说似乎太过分了。

1 个答案:

答案 0 :(得分:-1)

首先,当您调用ShowDialog()来显示表单时,在该表单关闭之前,该语句之后的任何代码都不会执行。请参阅this

的备注部分

因此,在您的案例中,不能将文件添加到ProjectFiles的列表视图中(ShowDialog)

但如果你需要这样做;

  1. 将ProjectFiles中listView1的访问修饰符更改为public
  2. 将指向ProjectFiles表单的指针保留为MainForm

    中的成员变量

    ProjectFiles theProjectFiles = new ProjectFiles();

  3. 使用.Show()代替.ShowDialog()

    显示ProjectFiles表单

    theProjectFiles.Show();

  4. 像往常一样使用ProjectFiles表单中的listView1:

    theProjectFiles.listView1.Add(...);