2017-08-15 49 views
0

我有2个表格,在Form1我有一个按钮,并在Form2我有一个ListBox与数据。 我想要的是点击Form1上的按钮,并将数据从Form2ListBox保存在文本文件中。如何保存一个文本文件中的列表框

我曾尝试:

这是在Form1上

private void toolStripButtonGuardar_Click(object sender, EventArgs e) 
    { 
     var myForm = new FormVer(); 

     //Escolher onde salvar o arquivo 
     SaveFileDialog sfd = new SaveFileDialog(); 
     sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
     sfd.Title = "Guardar"; 
     sfd.Filter = "Arquivos TXT (*.txt)|*.txt"; 

     if (sfd.ShowDialog() == DialogResult.OK) 
     { 
      try 
      { 

       File.WriteAllLines(sfd.FileName, myForm.listBox.Items.OfType<string>()); 

       //Mensagem de confirmação 
       MessageBox.Show("Guardado com sucesso", "Notificação", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
     } 
    } 

按钮,但它不工作,始终保存文件的空白。

+0

嗯,确实'myForm.listBox.Items.OfType ()'返回什么?如果'myForm'是一个'Form',那么您对它的期望并不清楚,因为您从未真正向用户展示过这种形式。所以没有与其控制进行任何交互。你究竟想从这种形式中得到什么? – David

+1

'var myForm = new FormVer();' - 那么你的问题(好吧,其中之一)。你创建一个全新的,完全独立的'FormVer'实例,它(假设)没有*列表框中的任何数据。你需要使'FormVer'的实例具有*这里提供的数据。 – Corak

+0

如何制作实例? 我需要创建一个课程吗? 对不起,我是新来的,我不知道从哪里开始。 – Amauri

回答

1
myForm.listBox.Items.OfType<string>() 

会返回一个空的枚举,因为Items包含ListBoxItem实例

下面应该工作:

ListBox listBox = myForm.listBox; 
IEnumerable<string> lines = listBox.Items.Select(item => listBox.GetItemText(item)); 

File.WriteAllLines(sfd.FileName, lines); 
+0

我试过你的例子,并在“选择”中给出错误,说它不包含定义。 – Amauri

+0

@Amauri让你有'System.Linq'在你的使用 –

+0

omg是我有System.Linq在我的使用 – Amauri

相关问题