using System; using System.Drawing; using System.Drawing.Printing; using System.Runtime.InteropServices; using System.Windows.Forms;
namespace RichWinForm { //외부 스크립트의 호출을 위한 인터페이스 public interface IPrintControlCOMIncomming { void show(string oData); string showDialog(); }
//외부 스크립트에서 public메서드를 호출하기위한 [ClassInterface(ClassInterfaceType.None)]
//유저컨트롤과 인터페이스(외부의 스크립트에서 public메서드 호출을 위해)를 상속받는다. public class Print: System.Windows.Forms.UserControl, IPrintControlCOMIncomming { private System.Windows.Forms.Button btnFile; System.Windows.Forms.TextBox textBox1; System.Windows.Forms.Button button1;
//미리보기 다이얼로그 인스턴스 생성 PrintPreviewDialog ppd = new System.Windows.Forms.PrintPreviewDialog();
//파일선택 다이얼로그 OpenFileDialog ofd = new OpenFileDialog();
//미리보기의 문서 인스턴스 생성 PrintDocument pd = new PrintDocument();
//초기화 private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.textBox1 = new System.Windows.Forms.TextBox(); this.btnFile = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.BackColor = System.Drawing.SystemColors.Control; this.button1.Font = new System.Drawing.Font("돋움", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); this.button1.Location = new System.Drawing.Point(16, 16); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(104, 23); this.button1.TabIndex = 0; this.button1.Text = "인쇄하기(윈폼)"; this.button1.Click += new System.EventHandler(this.button1_Click); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(16, 56); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(216, 21); this.textBox1.TabIndex = 1; this.textBox1.Text = ""; // // btnFile // this.btnFile.BackColor = System.Drawing.SystemColors.Control; this.btnFile.Font = new System.Drawing.Font("돋움", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); this.btnFile.Location = new System.Drawing.Point(112, 104); this.btnFile.Name = "btnFile"; this.btnFile.Size = new System.Drawing.Size(120, 23); this.btnFile.TabIndex = 3; this.btnFile.Text = "파일 업로드(윈폼)"; this.btnFile.Click += new System.EventHandler(this.btnFile_Click); // // Print // this.BackColor = System.Drawing.SystemColors.ControlLight; this.Controls.Add(this.btnFile); this.Controls.Add(this.textBox1); this.Controls.Add(this.button1); this.Name = "Print"; this.Size = new System.Drawing.Size(248, 176); this.ResumeLayout(false);
}
//생성자 public Print() { InitializeComponent(); this.pd.PrintPage += new PrintPageEventHandler(this.OnPrintPage); }
//페이지를 설정하는 이벤트 메서드 private void OnPrintPage(object obj, PrintPageEventArgs e) { string text = "앗싸!!! 된다..."; System.Drawing.Font printFont = new System.Drawing.Font("돋움", 12, System.Drawing.FontStyle.Regular);
e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 0, 0); }
//윈폼 버튼 클릭시 private void button1_Click(object sender, System.EventArgs e) { //문서의 이름 설정 pd.DocumentName="tt"; //미리보기 다이얼로그에 문서 지정 ppd.Document = pd; //다이얼로그 출력 ppd.ShowDialog(); }
#region IPrintControlCOMIncomming 멤버
//외부 스크립트 이벤트에 의하여 호줄 되는 메서드 public void show(string oData) { //외부에서 데이터를 가져와서 //버튼의 이름으로 설정 textBox1.Text = oData; //문서의 이름 설정 pd.DocumentName="tt"; //미리보기 다이얼로그에 문서 지정 ppd.Document = pd; //다이얼로그 출력 ppd.ShowDialog(); }
//웹폼 버튼 선택 시 파일 경로 출력 public string showDialog() { if(ofd.ShowDialog() == DialogResult.OK) { return ofd.FileName; } return null; } #endregion
//윈폼 버튼 선택 시 파일 경로 출력 private void btnFile_Click(object sender, System.EventArgs e) { if(ofd.ShowDialog() == DialogResult.OK) { textBox1.Text = ofd.FileName; } } } }
|
댓글