Csharp/C Sharp by API/System.Windows.Forms/PrinterSelectionDialog

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

PrinterSelectionDialog.PrinterName

<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Printing; using System.Windows.Forms; class PrinterSelectionDialog: Form {

    ComboBox combo;
  
    public PrinterSelectionDialog()
    {
         Label label    = new Label();
         label.Parent   = this;
         label.Text     = "Printer:";
         label.Location = new Point(8, 8);
         label.Size     = new Size(40, 8);
  
         combo = new ComboBox();
         combo.Parent   = this;
         combo.DropDownStyle = ComboBoxStyle.DropDownList;
         combo.Location = new Point(48, 8);
         combo.Size     = new Size(144, 8);
  
         foreach (string str in PrinterSettings.InstalledPrinters)
              combo.Items.Add(str);
  
         Button btn   = new Button();
         btn.Parent   = this;
         btn.Text     = "OK";
         btn.Location = new Point(40, 32);
         btn.Size     = new Size(40, 16);
         btn.DialogResult = DialogResult.OK;
         AcceptButton = btn;
  
         btn  = new Button();
         btn.Parent = this;
         btn.Text = "Cancel";
         btn.Location = new Point(120, 32);
         btn.Size   = new Size(40, 16);
         btn.DialogResult = DialogResult.Cancel;
  
         CancelButton = btn;
  
         ClientSize = new Size(200, 56);
         AutoScaleBaseSize = new Size(4, 8);
    }
    public string PrinterName
    {
         set { combo.SelectedItem = value; }
         get { return (string) combo.SelectedItem; }
    }

}

class PrintWithMargins: Form {

    public static void Main()
    {
         Application.Run(new PrintWithMargins());
    }
    public PrintWithMargins()
    {
         Text = "Print with Margins";
         Menu = new MainMenu();
         Menu.MenuItems.Add("&File");
         Menu.MenuItems[0].MenuItems.Add("&Print...", 
                                  new EventHandler(MenuFilePrintOnClick));
    }
    void MenuFilePrintOnClick(object obj, EventArgs ea)
    {
         PrintDocument prndoc = new PrintDocument();
  
         PrinterSelectionDialog dlg = new PrinterSelectionDialog();
         dlg.PrinterName = prndoc.PrinterSettings.PrinterName;
  
         if (dlg.ShowDialog() != DialogResult.OK)
              return;
  
         prndoc.PrinterSettings.PrinterName = dlg.PrinterName;
  
         prndoc.DocumentName = Text;
         prndoc.PrintPage += new PrintPageEventHandler(OnPrintPage);
         prndoc.Print();
    }
    void OnPrintPage(object obj, PrintPageEventArgs ppea)
    {
         Graphics   grfx  = ppea.Graphics;
         RectangleF rectf = new RectangleF(
              ppea.MarginBounds.Left - 
              (ppea.PageBounds.Width - grfx.VisibleClipBounds.Width) / 2,
              ppea.MarginBounds.Top - 
              (ppea.PageBounds.Height - grfx.VisibleClipBounds.Height) / 2,
              ppea.MarginBounds.Width,
              ppea.MarginBounds.Height);
  
         grfx.DrawRectangle(Pens.Black, rectf.X, rectf.Y, 
                                        rectf.Width, rectf.Height);
  
         grfx.DrawLine(Pens.Black, rectf.Left, rectf.Top, 
                                   rectf.Right, rectf.Bottom);
  
         grfx.DrawLine(Pens.Black, rectf.Right, rectf.Top, 
                                   rectf.Left, rectf.Bottom);
    }

}

 </source>