وعليكم السلام!
نعم، يمكنك عمل طباعة للفورم في C# باستخدام مكتبة PrintDocument . فيما يلي مثال بسيط يوضح كيفية إعداد الطباعة لفورم:
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
public class PrintExample : Form
{
private PrintDocument printDocument1 = new PrintDocument();
private Button printButton = new Button();
private TextBox textBox = new TextBox();
private GroupBox groupBox = new GroupBox();
public PrintExample()
{
printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
printButton.Text = "Print Form";
printButton.Click += new EventHandler(printButton_Click);
textBox.Text = "Text to be printed.";
textBox.Location = new Point(10, 10);
groupBox.Text = "Group Box Content";
groupBox.Location = new Point(10, 50);
groupBox.Size = new Size(200, 100);
Controls.Add(printButton);
Controls.Add(textBox);
Controls.Add(groupBox);
}
private void printButton_Click(object sender, EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument1;
if (printDialog.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
// Draw the text from the TextBox
e.Graphics.DrawString(textBox.Text, textBox.Font, Brushes.Black, new PointF(100, 100));
// Draw the contents of the GroupBox
DrawGroupBox(groupBox, e.Graphics, new PointF(100, 150));
}
private void DrawGroupBox(GroupBox groupBox, Graphics g, PointF point)
{
// Draw the GroupBox border
g.DrawRectangle(Pens.Black, point.X, point.Y, groupBox.Width, groupBox.Height);
// Draw the GroupBox text
g.DrawString(groupBox.Text, groupBox.Font, Brushes.Black, point.X + 5, point.Y - groupBox.Font.Height);
// Offset the point for controls within the GroupBox
point.X += 10;
point.Y += 20;
// Draw the controls inside the GroupBox
foreach (Control control in groupBox.Controls)
{
control.DrawToBitmap(new Bitmap(control.Width, control.Height), new Rectangle(0, 0, control.Width, control.Height));
g.DrawImage(control.BackgroundImage, point);
point.Y += control.Height + 5;
}
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new PrintExample());
}
}