C# 表单关闭并从表单中删除项
下面是完整的代码,其中有两个小问题需要我搜索,但什么都没有。第一个问题是,当我从列表中删除一个选定的项目时,它会删除它,但列表不会正确排序,因为它会删除它,但之前的项目是存在的项目,而不是我删除的项目。接下来是我的第二个问题,当我关闭表单时,从列表中删除的内容不会保存到xml文档中。所以,当我打开表单时,我没有移除任何东西,所有的东西都仍然存在C# 表单关闭并从表单中删除项,c#,xml,winforms,C#,Xml,Winforms,下面是完整的代码,其中有两个小问题需要我搜索,但什么都没有。第一个问题是,当我从列表中删除一个选定的项目时,它会删除它,但列表不会正确排序,因为它会删除它,但之前的项目是存在的项目,而不是我删除的项目。接下来是我的第二个问题,当我关闭表单时,从列表中删除的内容不会保存到xml文档中。所以,当我打开表单时,我没有移除任何东西,所有的东西都仍然存在 using System; using System.Collections.Generic; using System.ComponentModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Resources;
namespace SaveOpenXmlTest1._2
{
public partial class Form1 : Form
{
//ListViewItem employeer = new ListViewItem();
//List<Employer> employer = new List<Employer>();
List<Employeer> employeer = new List<Employeer>();
DialogResult result;
string filename;
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
//private StreamWriter filewriter;
//private StreamReader fileReader;
public Form1()
{
InitializeComponent();
}
//List<Employ> employ = new List<Employ>();
//List<Employ> employeer = new List<Employ>();
private void Form1_Load(object sender, EventArgs e)
{
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
using (SaveFileDialog filechooser = new SaveFileDialog())
{
filechooser.Filter = "Xml Files (*.xml)|*.xml";
filechooser.CheckFileExists = false;
result = filechooser.ShowDialog();
filename = filechooser.FileName;
}
if (result == DialogResult.OK)
{
if (filename == string.Empty)
{
MessageBox.Show("Invalid File Name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
try
{
//FileStream output = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
//filewriter = new StreamWriter(output);
/////////////////////////////////////////////////////////////////
//if (!Directory.Exists(filename + "Employment History"))
// Directory.CreateDirectory(filename + "Empoyment History");
if (!File.Exists(filename))
{
XmlTextWriter xW = new XmlTextWriter(filename, Encoding.UTF8);
xW.Formatting = Formatting.Indented;
xW.WriteStartDocument();
xW.WriteStartElement("Employeer");
xW.WriteEndElement();
xW.Close();
XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);
foreach(XmlNode xNode in xDoc.SelectNodes("Employeer/Employeer"))
{
Employeer em = new Employeer();
em.Employeerc = xNode.SelectSingleNode("Name").InnerText;
em.StartDate = DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode("StartDate").InnerText));
em.EndDate = DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode("EndDate").InnerText));
employeer.Add(em);
listView1.Items.Add(em.Employeerc);
}
//xW = WriteStartElement("Emplyment");
}
saveToolStripMenuItem.Enabled = false;
saveAsToolStripMenuItem.Enabled = true;
}
catch (IOException)
{
MessageBox.Show("Error Openning File", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
}
class Employeer
{
public string Employeerc { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
Employeer em = new Employeer();
em.Employeerc = textBox1.Text;
em.StartDate = dateTimePicker1.Value;
em.EndDate = dateTimePicker2.Value;
employeer.Add(em);
listView1.Items.Add(em.Employeerc);
textBox1.Text = "";
dateTimePicker1.Value = DateTime.Now;
dateTimePicker2.Value = DateTime.Now;
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if(listView1.SelectedItems.Count == 0 )
return;
textBox1.Text = employeer[listView1.SelectedItems[0].Index].Employeerc;
dateTimePicker1.Value = employeer[listView1.SelectedItems[0].Index].StartDate;
dateTimePicker2.Value = employeer[listView1.SelectedItems[0].Index].EndDate;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//try
//{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);
XmlNode xNode = xDoc.SelectSingleNode("Employeer");
xNode.RemoveAll();
foreach (Employeer em in employeer)
{
XmlNode xTop = xDoc.CreateElement("Employeer");
XmlNode xName = xDoc.CreateElement("Name");
XmlNode xStartDate = xDoc.CreateElement("StartDate");
XmlNode xEndDate = xDoc.CreateElement("EndDate");
xName.InnerText = em.Employeerc;
xStartDate.InnerText = em.StartDate.ToFileTime().ToString();
xEndDate.InnerText = em.EndDate.ToFileTime().ToString();
xTop.AppendChild(xName);
xTop.AppendChild(xStartDate);
xTop.AppendChild(xEndDate);
xDoc.DocumentElement.AppendChild(xTop);
}
xDoc.Save(filename);
//}
//catch
//{
//}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog fileChooser = new OpenFileDialog())
{
fileChooser.Filter = "Xml Files (*.xml)|*.xml";
fileChooser.CheckFileExists = false;
result = fileChooser.ShowDialog();
filename = fileChooser.FileName;
}
if (result == DialogResult.OK)
{
if (filename == string.Empty)
{
MessageBox.Show("Invalid File Name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
try
{
//FileStream output = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
//filewriter = new StreamWriter(output);
/////////////////////////////////////////////////////////////////
//if (!Directory.Exists(filename + "Employment History"))
// Directory.CreateDirectory(filename + "Empoyment History");
//if (!File.Exists(filename))
//{
// XmlTextWriter xW = new XmlTextWriter(filename, Encoding.UTF8);
// xW.Formatting = Formatting.Indented;
// xW.WriteStartDocument();
// xW.WriteStartElement("Employeer");
// xW.WriteEndElement();
// xW.Close();
XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);
foreach (XmlNode xNode in xDoc.SelectNodes("Employeer/Employeer"))
{
Employeer em = new Employeer();
em.Employeerc = xNode.SelectSingleNode("Name").InnerText;
em.StartDate = DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode("StartDate").InnerText));
em.EndDate = DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode("EndDate").InnerText));
employeer.Add(em);
listView1.Items.Add(em.Employeerc);
}
//xW = WriteStartElement("Emplyment");
//}
saveToolStripMenuItem.Enabled = false;
saveAsToolStripMenuItem.Enabled = true;
}
catch (IOException)
{
MessageBox.Show("Error Openning File", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
//MessageBox.Show("Save and Exit", "Cancel", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
void Remove()
{
try
{
//listView1.Items.RemoveAt(listView1.SelectedItems[0].Index);
//employeer.RemoveRange(listView1.SelectedItems[0].Index, 1);
if (listView1.SelectedItems.Count >= 1)
{
//return;
listView1.Items.Remove(listView1.SelectedItems[0]);
employeer.RemoveAt((int)listView1.SelectedItems[0].Index);
textBox1.Text = "";
dateTimePicker1.Value = DateTime.Now;
dateTimePicker2.Value = DateTime.Now;
}
}
catch
{
}
}
private void button3_Click(object sender, EventArgs e)
{
Remove();
}
}
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
使用System.IO;
使用System.Xml;
利用系统资源;
名称空间SaveOpenXmlTest1.\u 2
{
公共部分类Form1:Form
{
//ListViewItem employeer=新ListViewItem();
//列表雇主=新列表();
List employeer=新列表();
对话结果;
字符串文件名;
字符串路径=Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
//私有StreamWriter文件编写器;
//私有StreamReader文件阅读器;
公共表格1()
{
初始化组件();
}
//List employ=新列表();
//List employeer=新列表();
私有void Form1\u加载(对象发送方、事件参数e)
{
}
私有void saveToolStripMenuItem\u单击(对象发送者,事件参数e)
{
使用(SaveFileDialog filechooser=new SaveFileDialog())
{
filechooser.Filter=“Xml文件(*.Xml)|*.Xml”;
filechooser.CheckFileExists=false;
结果=filechooser.ShowDialog();
filename=filechooser.filename;
}
if(result==DialogResult.OK)
{
如果(文件名==string.Empty)
{
Show(“无效文件名”,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error);
}
其他的
{
尝试
{
//FileStream output=新FileStream(文件名,FileMode.OpenOrCreate,FileAccess.Write);
//filewriter=新的StreamWriter(输出);
/////////////////////////////////////////////////////////////////
//如果(!Directory.Exists(文件名+“雇用历史”))
//CreateDirectory(文件名+“员工历史”);
如果(!File.Exists(filename))
{
XmlTextWriter xW=新的XmlTextWriter(文件名,Encoding.UTF8);
xW.Formatting=格式化.缩进;
xW.WriteStartDocument();
xW.书面财产(“雇主”);
xW.WriteEndElement();
xW.Close();
XmlDocument xDoc=新的XmlDocument();
加载(文件名);
foreach(xDoc.SelectNodes中的XmlNode xNode(“Employeer/Employeer”))
{
Employeer em=新员工();
em.Employeerc=xNode.SelectSingleNode(“名称”).InnerText;
em.StartDate=DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode(“StartDate”).InnerText));
em.EndDate=DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode(“EndDate”).InnerText));
雇主添加(em);
列表视图1.Items.Add(em.Employeerc);
}
//xW=书面启动元素(“雇用”);
}
saveToolStripMenuItem.Enabled=false;
saveAstolStripMenuItem.Enabled=true;
}
捕获(IOException)
{
Show(“错误打开文件”,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
}
私有void saveAstolStripMenuItem\u单击(对象发送方,事件参数e)
{
}
阶级雇员
{
公共字符串Employeerc{get;set;}
公共日期时间起始日期{get;set;}
公共日期时间结束日期{get;set;}
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
Employeer em=新员工();
em.Employeerc=textBox1.Text;
em.StartDate=dateTimePicker1.Value;
em.EndDate=dateTimePicker2.Value;
雇主添加(em);
列表视图1.Items.Add(em.Employeerc);
textBox1.Text=“”;
dateTimePicker1.Value=DateTime.Now;
dateTimePicker2.Value=DateTime.Now;
}
私有无效列表视图1\u SelectedIndexChanged(对象发送方,事件参数e)
{
如果(listView1.SelectedItems.Count==0)
返回;
textBox1.Text=employeer[listView1.SelectedItems[0].Index].Employeerc;
dateTimePicker1.Value=employeer[listView1.SelectedItems[0].Index].StartDate;
dateTimePicker2.Value=employeer[listView1.SelectedItems[0].索引].EndDate;
}
私有作废Form1\u FormClosing(对象发送方,FormClosingEventArgs e)
{
//试一试
//{
XmlDocument xDoc=新的XmlDocument();
加载(文件名);
XmlNode xNode=xDoc.SelectSingleNode(“雇员”);
xNode.RemoveAll();
foreach(Employeer em in Employeer)
{
XmlNode xTop=xDoc.CreateElement(“雇员”);
XmlNode xName=xDoc.CreateElement(“名称”);
XmlNode xStartDate=xDoc.CreateElement(“StartDate”);
XmlNode xEndDate=xDoc.CreateElement(“EndDate”);
xName.InnerText=em.Employeerc;
xStartDate.InnerText=em.StartDate.ToFileTime().ToString();
森德
Employers em = new Employers();
employers.RemoveAt(listView1.SelectedItems[0].Index);
foreach (ListViewItem eachItem in listView1.SelectedItems)
{
listView1.Items.Remove(eachItem);
}