Как сохранить настройки печати из программы Windows Forms?

У меня есть программа, которая печатает этикетки, и я должен позволить пользователю сохранять / запоминать настройки для принтера. Итак, у меня есть этот код:

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

Пользователь выбирает принтер и нажимает кнопку свойств, вносит некоторые изменения (размер бумаги, ориентация и т. Д.), Затем нажимает "ОК" и затем "ОК" в PrintDialog.

Моя проблема в том, что эти изменения не запоминаются... При повторном нажатии кнопки или перезапуске приложения они исчезают...

Кто-нибудь знает, как сохранить их в области применения? Или, если область применения невозможна, то, может быть, как сохранить их в системе (поэтому, когда я иду на панель управления -> принтеры -> щелкните правой кнопкой мыши на принтере -> настройки, они будут там)?

1 ответ

Юй может использовать мою собственную сериализацию на основе интерфейса.;)

Вы можете расширить сериализацию на основе интерфейса, используя мои свойства сериализации 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...
            }
        }
    }
}
Другие вопросы по тегам