下面我来详细讲解“c#保存窗口位置大小操作类(序列化和文件读写功能)”的完整攻略,具体步骤如下:
1. 在窗口类中添加成员变量
首先,在窗口类中添加两个成员变量,用于存储窗口的位置和大小信息,代码如下:
private int x;
private int y;
private int width;
private int height;
2. 重写OnClosing方法
在窗口类中重写OnClosing方法,用于在窗口关闭前保存窗口的位置和大小信息,代码如下:
protected override void OnClosing(CancelEventArgs e)
{
// 保存窗口位置和大小
Properties.Settings.Default.WindowPosition = new Point(this.Left, this.Top);
Properties.Settings.Default.WindowSize = new Size(this.Width, this.Height);
Properties.Settings.Default.Save();
base.OnClosing(e);
}
3. 添加读写文件方法
接下来,我们需要添加读写文件的方法。在窗口类中添加Save和Load两个方法,用于保存和加载窗口的位置和大小信息,代码如下:
private void Save()
{
using (Stream stream = File.Open("config.dat", FileMode.Create))
{
var formatter = new BinaryFormatter();
formatter.Serialize(stream, new int[] { x, y, width, height });
}
}
private void Load()
{
try
{
using (Stream stream = File.Open("config.dat", FileMode.Open))
{
var formatter = new BinaryFormatter();
var values = (int[])formatter.Deserialize(stream);
x = values[0];
y = values[1];
width = values[2];
height = values[3];
}
}
catch (FileNotFoundException ex)
{
// 如果文件不存在,则使用默认值
x = y = 0;
width = height = 400;
}
}
4. 测试保存和读取功能
最后,我们可以测试一下保存和读取窗口位置和大小的功能。首先,我们可以在窗口加载时调用Load方法,代码如下:
public Form1()
{
InitializeComponent();
Load();
// 设置窗口位置和大小
this.Left = x;
this.Top = y;
this.Width = width;
this.Height = height;
}
接下来,我们可以在窗口关闭时调用Save方法,代码如下:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// 保存窗口位置和大小
x = this.Left;
y = this.Top;
width = this.Width;
height = this.Height;
Save();
}
到此为止,我们已经成功地实现了保存窗口位置和大小的功能。
示例:
假设我们有一个名为Form1的窗口,在该窗口上添加了两个按钮,分别为btnSave和btnLoad。当用户单击btnSave时,将调用Save方法保存窗口的位置和大小;当用户单击btnLoad时,将调用Load方法加载窗口的位置和大小。
private void btnSave_Click(object sender, EventArgs e)
{
// 保存窗口位置和大小
x = this.Left;
y = this.Top;
width = this.Width;
height = this.Height;
Save();
}
private void btnLoad_Click(object sender, EventArgs e)
{
Load();
// 设置窗口位置和大小
this.Left = x;
this.Top = y;
this.Width = width;
this.Height = height;
}
这样,我们就可以通过点击按钮来保存和加载窗口的位置和大小了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#保存窗口位置大小操作类(序列化和文件读写功能) - Python技术站