更新后的MoreEffectiveKey(二)

Posted on 2007-10-29 22:44  Samson小天  阅读(244)  评论(0编辑  收藏  举报
    这次主要是能让程序在启动时出现在上次关闭这个程序的位置~
    一开始我考虑的不好,本来我想添加个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]));
            }

        }

 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();
            }

    这样我们就实现了这个功能,以前在网上看到过这类标题,但是觉得没用就没记下来,现在想要了反而找不到了,-_-||,总算自己想出了个办法实现了这个功能,不知道各位有没有更有效率的办法告诉我哈,^-^

Copyright © 2024 Samson小天
Powered by .NET 9.0 on Kubernetes