Sergey Alexandrovich Kryukov
Конечно, это будет сделано, потому что вы создадите совершенно новый экземпляр диалогового окна с помощью
PageSetupDialog pageSetup = new PageSetupDialog();
А чего еще можно было ожидать?
Вам действительно нужно повторно использовать один и тот же объект снова и снова. Самый лучший и универсальный способ сделать это по требованию с помощью
ленивая инициализация узор, смотри
http://en.wikipedia.org/wiki/Lazy_initialization[
^].
Я бы просто сохранил ссылку на диалог как поле основной формы, так что вся картина выглядела бы так:
public class MainForm : Form {
PageSetupDialog PageSetupDialog {
get {
if (fPageSetupDialog == null) {
fPageSetupDialog = new PageSetupDialog();
fPageSetupDialog.PrinterSettings = new System.Drawing.Printing.PrinterSettings();
fPageSetupDialog.PageSettings = new System.Drawing.Printing.PageSettings();
fPageSetupDialog.EnableMetric = false;
}
return fPageSetupDialog;
} //PageSetupDialog
PageSetupDialog fPageSetupDialog; //null at first, don't use it directly
//...
void SomeMethodWherePageSetupDialogIsUsed() {
// of the very first call, an instance will be created
// on other calls, same instance will be used
// preserving all the previous settings
PageSetupDialog.ShowDialog();
//...
} //SomeMethodWherePageSetupDialogIsUsed
} //class MainForm
—СА