دستتون درد نکنه. فقط یه مسئله وقتی تب ها چندتا باشه رویداد که اتفاق می افته به تعداد تب ها تکرار میشه.
کد های کاملمه. که میخوام از اون تصویر پرینت بگیرم. با پرینت مشکلی نداره اما اگه تب دوتا یا بیشتر از یکی باشه دیالوگ پرینت به تعداد صفحات باز میشه
public void Set(){
TabPage addedTabPage1 = new TabPage("صفحه دوم");
tabControl_webBrowsers.TabPages.Add(addedTabPage1) ;
addedTabPage1.AutoScroll = true;
PictureBox _P1 = new PictureBox();
_P1.Height = 842;
_P1.Width = 595;
_P1.SizeMode = PictureBoxSizeMode.StretchImage;
_P1.Image = Image.FromFile(path);
_P1.MouseDown += _P_MouseDown;
cm.MenuItems.AddRange(new MenuItem[]{ mi1,mi2});
mi1.Click += new EventHandler(mi1_Click);
addedTabPage1.Controls.Add(_P1);
TabPage addedTabPage2 = new TabPage("صفحه دوم");
tabControl_webBrowsers.TabPages.Add(addedTabPage2) ;
addedTabPage2.AutoScroll = true;
PictureBox _P2 = new PictureBox();
_P2.Height = 842;
_P2.Width = 595;
_P2.SizeMode = PictureBoxSizeMode.StretchImage;
_P2.Image = Image.FromFile(path);
_P2.MouseDown += _P_MouseDown;
cm.MenuItems.AddRange(new MenuItem[]{ mi1,mi2});
mi1.Click += new EventHandler(mi1_Click);
addedTabPage2.Controls.Add(_P2);
}
void _P_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
cm.Show((Control)sender, e.Location);
}
}
void mi1_Click(object sender, EventArgs e)
{
PictureBox p = cm.SourceControl as PictureBox;
MessageBox.Show(p.Name);
pictureBox1.Image = p.Image;
System.Drawing.Printing.PrintDocument myPrintDocument1 = new System.Drawing.Printing.PrintDocument();
PrintDialog myPrinDialog1 = new PrintDialog();
PaperSize ps = new PaperSize("A4", 827, 1170);
myPrintDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(prin tDocument1_PrintPage);
myPrintDocument1.DefaultPageSettings.PaperSize = ps;
myPrinDialog1.Document = myPrintDocument1;
if (myPrinDialog1.ShowDialog() == DialogResult.OK)
{
myPrintDocument1.Print();
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Image i = pictureBox1.Image;
float newWidth = i.Width * 100 / i.HorizontalResolution;
float newHeight = i.Height * 100 / i.VerticalResolution;
float widthFactor = newWidth / e.PageBounds.Width;
float heightFactor = newHeight / e.PageBounds.Height;
if (widthFactor > 1 | heightFactor > 1)
{
if (widthFactor > heightFactor)
{
newWidth = newWidth / widthFactor;
newHeight = newHeight / widthFactor;
}
else
{
newWidth = newWidth / heightFactor;
newHeight = newHeight / heightFactor;
}
}
e.Graphics.DrawImage(i, 0, 0, (int)newWidth, (int)newHeight);
}