1

我有打印标签的程序,我必须允许用户保存/记住打印机的设置。所以我有这个代码:

private void printerToolStripButton_Click(object sender, EventArgs e)
{
     PrintDialog dialog = new PrintDialog();
     dialog.ShowDialog();
}

用户选择打印机并单击属性按钮,进行一些更改(纸张大小、方向等),然后单击“确定”,然后单击 PrintDialog 上的“确定”。

我的问题是这些更改不会被记住...当我再次单击按钮或重新启动应用程序时,它们会消失...

有谁知道如何将它们保留在应用程序范围内?或者如果应用范围是不可能的,那么也许如何将它们保存在系统中(所以当我进入控制面板-> 打印机-> 右键单击​​打印机-> 首选项时,它们会在那里)?

4

1 回答 1

2

余可以使用我自己的接口驱动序列化。;)

您可以使用我的 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...
            }
        }
    }
}
于 2011-01-19T10:41:49.277 回答