PDA

View Full Version : Lưu lại kích thước và vị trí của Form vào tài liệu XML trong C#



neverland87
20-07-2007, 04:20 PM
Một yêu cầu phổ biến đối với Form là nhớ lại vị trí và kích thước cuối cùng của nó. Thông thường, thông tin này được lưu trữ trong registry. Tuy nhiên, bài viết này, mình xin chia sẻ thêm 1 cách khác, đó là dùng XML để lưu lại kích thước, vị trí của Form
- Điều đầu tiên các bạn cần làm là thêm vào namespace:


using System.Xml;


- Bây giờ, bạn thụ lý tình huống Load của Form như sau:


private void Form1_Load(object sender, EventArgs e)
{
try
{
//trường hợp Form được nạp
//trong những lần kế tiếp
XmlDocument xmlDoc = new XmlDocument();
//nạp cauhinh.xml, lấy thông tin và trả về vị trí trước kia
//cho Form
xmlDoc.Load("cauhinh.xml");
this.Height = int.Parse(xmlDoc.DocumentElement["Height"].InnerText);
this.Width = int.Parse(xmlDoc.DocumentElement["Width"].InnerText);
this.Left = int.Parse(xmlDoc.DocumentElement["Left"].InnerText);
this.Top = int.Parse(xmlDoc.DocumentElement["Top"].InnerText);
}
catch
{
//trong trường hợp Form được nạp vào lần đầu tiên
//thì sẽ tạo ra cauhinh.xml
//và lưu kích thước Form vào
int height = this.Height;
int width = this.Width;
int left = this.Left;
int top = this.Top;
XmlTextWriter writer = new XmlTextWriter("cauhinh.xml", null);
writer.WriteStartDocument();
writer.WriteStartElement("cauhinh");

writer.WriteStartElement("Height");
writer.WriteString(height.ToString());
writer.WriteEndElement();

writer.WriteStartElement("Width");
writer.WriteString(width.ToString());
writer.WriteEndElement();

writer.WriteStartElement("Left");
writer.WriteString(left.ToString());
writer.WriteEndElement();

writer.WriteStartElement("Top");
writer.WriteString(top.ToString());
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
//tài liệu XML lúc này có dạng:
//<?xml version="1.0" ?>
// <cauhinh>
//<Height>556</Height>
//<Width>697</Width>
//<Left>111</Left>
//<Top>53</Top>
//</cauhinh>
}
}



- Kế tiếp, bạn thụ lý tình huống FormClosed của Form như sau:


private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//Khi Form được đóng
//nó sẽ nạp cauhinh.xml
//để lưu lại kích thước lúc này
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("cauhinh.xml");

xmlDoc.DocumentElement["Height"].InnerText = this.Height.ToString();
xmlDoc.DocumentElement["Width"].InnerText = this.Width.ToString();
xmlDoc.DocumentElement["Top"].InnerText = this.Top.ToString();
xmlDoc.DocumentElement["Left"].InnerText = this.Left.ToString();
xmlDoc.Save("cauhinh.xml");
}



Bây giờ, bạn thử nhấn F5 để Run chương trình đi nào, sau đó thay đổi kích thước của Form và đóng Form rồi lại mở ra nữa. Bạn sẽ nhận được điều mình cần.

Xcross87
20-07-2007, 05:30 PM
Ngày xưa settings thiết lập bằng file *.ini (initialization) , bây giờ có xml tiện dụng đa năng hơn, phê thật :D