我有2个表单,Form1
我有一个按钮,在Form2
我有ListBox
数据。
我想要的是点击Form1
上的按钮,并将Form2
ListBox
中的数据保存在文本文件中。
我尝试过:
这是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 :(得分: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);