1

ラベルを印刷するプログラムがあり、ユーザーがプリンターの設定を保存/記憶できるようにする必要があります。だから私はこのコードを持っています:

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

ユーザーがプリンタを選択してプロパティボタンをクリックし、いくつかの変更(用紙サイズ、向きなど)を行ってから、[OK]をクリックし、PrintDialogで[OK]をクリックします。

私の問題は、それらの変更が記憶されていないことです...ボタンをもう一度クリックするか、アプリケーションを再起動すると、それらは消えます...

誰かがそれらをアプリケーションスコープに永続化する方法を知っていますか?または、アプリケーションスコープが不可能な場合は、システムに保存する方法を教えてください(つまり、[コントロールパネル]->[プリンター]->[プリンター]を右クリック->[設定]に移動すると、そこに表示されます)。

4

1 に答える 1

2

Yuは、独自のインターフェイス駆動型シリアル化を使用できます。;)

私の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 に答える