这次主要是能让程序在启动时出现在上次关闭这个程序的位置~
一开始我考虑的不好,本来我想添加个keyUp事件,每次移动边框时对配置文件更新,这无疑十分浪费资源。经过考虑发现其实问题很简单的,其实我们只要添加一个FormClosing事件,在关闭窗体时保存下当前的位置就可以了。
方法如下:
1.首先我们添加一个FormLoad事件,用于读取初始化位置,如果读取不到我们就创建一个配置文件,将位置默认设置为1024×768,代码如下:
2.接下来就是添加个FormClosing事件,当关闭窗体时将当前窗体的位置数据保存下来,代码如下
这样我们就实现了这个功能,以前在网上看到过这类标题,但是觉得没用就没记下来,现在想要了反而找不到了,-_-||,总算自己想出了个办法实现了这个功能,不知道各位有没有更有效率的办法告诉我哈,^-^
一开始我考虑的不好,本来我想添加个keyUp事件,每次移动边框时对配置文件更新,这无疑十分浪费资源。经过考虑发现其实问题很简单的,其实我们只要添加一个FormClosing事件,在关闭窗体时保存下当前的位置就可以了。
方法如下:
1.首先我们添加一个FormLoad事件,用于读取初始化位置,如果读取不到我们就创建一个配置文件,将位置默认设置为1024×768,代码如下:
private void Form_Main_Load(object sender, EventArgs e)
{
FileInfo fi = new FileInfo("Control.DAT");
if (fi.Exists)
{
LoadFormAndControl();//存在配置文件我们就读取,然后设置窗体位置
}
else//不存在就创建配置文件,并初始化默认位置
{
using (FileStream fs = new FileStream("Control.DAT",FileMode.Create))
{
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
sw.WriteLine("1024,768\r\n");
sw.Close();
}
}
}
private void LoadFormAndControl()
{
using (FileStream fs = new FileStream("Control.DAT", FileMode.Open))
{
StreamReader sr = new StreamReader(fs, Encoding.Default);
string TempLocation=sr.ReadLine();
string []SetLocation=new string [2];
byte count=0;
foreach (char x in TempLocation)
{
if (x != ',')
SetLocation[count] += x;
else
count++;
}
this.SetDesktopLocation(int.Parse(SetLocation[0]), int.Parse(SetLocation[1]));
}
}
{
FileInfo fi = new FileInfo("Control.DAT");
if (fi.Exists)
{
LoadFormAndControl();//存在配置文件我们就读取,然后设置窗体位置
}
else//不存在就创建配置文件,并初始化默认位置
{
using (FileStream fs = new FileStream("Control.DAT",FileMode.Create))
{
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
sw.WriteLine("1024,768\r\n");
sw.Close();
}
}
}
private void LoadFormAndControl()
{
using (FileStream fs = new FileStream("Control.DAT", FileMode.Open))
{
StreamReader sr = new StreamReader(fs, Encoding.Default);
string TempLocation=sr.ReadLine();
string []SetLocation=new string [2];
byte count=0;
foreach (char x in TempLocation)
{
if (x != ',')
SetLocation[count] += x;
else
count++;
}
this.SetDesktopLocation(int.Parse(SetLocation[0]), int.Parse(SetLocation[1]));
}
}
2.接下来就是添加个FormClosing事件,当关闭窗体时将当前窗体的位置数据保存下来,代码如下
private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
{
int LX=Convert.ToInt32(this.Location.X);
int LY = Convert.ToInt32(this.Location.Y);
using (FileStream fs=new FileStream ("Control.DAT",FileMode.Open))
{
StreamWriter sw=new StreamWriter (fs,Encoding.Default);
sw.WriteLine(LX+","+LY);
sw.Close();
}
{
int LX=Convert.ToInt32(this.Location.X);
int LY = Convert.ToInt32(this.Location.Y);
using (FileStream fs=new FileStream ("Control.DAT",FileMode.Open))
{
StreamWriter sw=new StreamWriter (fs,Encoding.Default);
sw.WriteLine(LX+","+LY);
sw.Close();
}
这样我们就实现了这个功能,以前在网上看到过这类标题,但是觉得没用就没记下来,现在想要了反而找不到了,-_-||,总算自己想出了个办法实现了这个功能,不知道各位有没有更有效率的办法告诉我哈,^-^