我有打印标签的程序,我必须允许用户保存/记住打印机的设置。所以我有这个代码:
private void printerToolStripButton_Click(object sender, EventArgs e)
{
PrintDialog dialog = new PrintDialog();
dialog.ShowDialog();
}
用户选择打印机并单击属性按钮,进行一些更改(纸张大小,方向等),然后单击“确定”,然后在PrintDialog上单击“确定”。
我的问题是这些更改不会被记住......当我再次点击按钮或重新启动应用程序时,它们就会消失......
有谁知道如何在应用范围内坚持下去?或者如果应用程序范围不可能,那么可能如何将它们保存在系统中(所以当我转到控制面板 - >打印机 - >右键单击打印机 - >首选项它们将在那里)?
答案 0 :(得分:2)
Yu可以使用我自己的interface-driven serialization。 ;)
您可以使用我的xml序列化属性扩展接口驱动的序列化。顺便说一句,当您使用接口继承时,接口驱动的序列化很酷;)
using System;
using System.IO;
using System.Windows.Forms;
// download at [http://xmlserialization.codeplex.com/]
using System.Xml.Serialization;
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[XmlRootSerializer("PrinterSettings")]
public interface IPrinterSettings
{
bool PrintToFile { get; set; }
}
private static readonly string PrinterConfigurationFullName = Path.Combine(Application.StartupPath, "PrinterSettings.xml");
private void Form1_Load(object sender, EventArgs e)
{
if (File.Exists(PrinterConfigurationFullName))
{
XmlObjectSerializer.Load<IPrinterSettings>(File.ReadAllText(PrinterConfigurationFullName), printDialog1);
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
File.WriteAllText(PrinterConfigurationFullName, XmlObjectSerializer.Save<IPrinterSettings>(printDialog1));
}
private void button1_Click(object sender, EventArgs e)
{
if (printDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// do required stuff here...
}
}
}
}