دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل printPreviewDialog در سی شارپ
1404/07/09 -
Storage در SQL Server
1404/07/09 -
کنترل printPreviewControl در سی شارپ
1404/07/08 -
Service Broker در SQL Server
1404/07/08 -
کنترل radioButton در سی شارپ
1404/07/07 -
System View در SQL Server
1404/07/07
کنترل printPreviewControl در سی شارپ

کنترل PrintPreviewControl در سیشارپ
یکی از نیازهای مهم در نرمافزارهایی که قابلیت چاپ دارند، این است که کاربر قبل از ارسال دادهها به پرینتر بتواند پیشنمایش چاپ را مشاهده کند.
این موضوع باعث میشود که کاربر بتواند خطاها را اصلاح کرده یا تغییرات لازم را قبل از هدر دادن کاغذ و جوهر انجام دهد.
در محیط Windows Forms زبان برنامهنویسی سیشارپ، برای این کار چند ابزار مختلف وجود دارد.
یکی از این ابزارها، کنترل PrintPreviewControl است.
این کنترل یک محیط گرافیکی در اختیار برنامهنویس قرار میدهد تا محتوای چاپی که توسط PrintDocument آماده میشود، به صورت پیشنمایش نمایش داده شود.
مفهوم PrintPreviewControl در سیشارپ
کنترل PrintPreviewControl یکی از کنترلهای موجود در فضای نام System.Windows.Forms است.
این کنترل وظیفه دارد پیشنمایشی از محتوای چاپی را در داخل فرم نشان دهد.
چند نکته مهم درباره آن:
- این کنترل خودش قابلیت چاپ ندارد.
- برای نمایش محتوا باید به یک شیء PrintDocument متصل شود.
- بهصورت مستقیم روی فرم قرار میگیرد و کاربر میتواند صفحات چاپی را در همان فرم ببیند.
برخلاف کنترل PrintPreviewDialog که یک پنجره آماده برای پیشنمایش باز میکند، PrintPreviewControl انعطاف بیشتری دارد چون میتوان آن را در هر جای فرم قرار داد و با سایر کنترلها ترکیب کرد.
تفاوت PrintPreviewControl و PrintPreviewDialog
-
PrintPreviewDialog
یک دیالوگ آماده و استاندارد سیستمعامل برای نمایش پیشنمایش چاپ است. سادهتر است اما انعطاف کمی دارد. -
PrintPreviewControl
خود کنترل است که میتوان آن را در فرم گذاشت و اندازه، مکان و ظاهر آن را سفارشیسازی کرد.
به همین دلیل، اگر نیاز دارید پیشنمایش چاپ بخشی از فرم اصلی برنامه باشد (نه یک پنجره جداگانه)، باید از PrintPreviewControl استفاده کنید.
ویژگیهای مهم PrintPreviewControl در سی شارپ
-
Document
این ویژگی مهمترین بخش کنترل است. یک شیء PrintDocument به آن اختصاص داده میشود تا مشخص شود چه محتوایی باید پیشنمایش شود.
printPreviewControl1.Document = printDocument1;
-
Zoom
میزان بزرگنمایی پیشنمایش را مشخص میکند. مقدار پیشفرض ۱.۰ (یعنی ۱۰۰٪) است.
printPreviewControl1.Zoom = 1.5; // ۱۵۰٪ بزرگنمایی
-
StartPage
تعیین میکند کدام صفحه بهصورت پیشفرض نمایش داده شود.
printPreviewControl1.StartPage = 0; // شروع از صفحه اول
-
Rows و Columns
با این ویژگیها میتوان مشخص کرد چند صفحه چاپی در یک نمای گریدی نمایش داده شود.
printPreviewControl1.Rows = 2;
printPreviewControl1.Columns = 2;
این کار زمانی کاربرد دارد که کاربر بخواهد چند صفحه را کنار هم ببیند.
ایجاد PrintPreviewControl در فرم در سی شارپ
برای استفاده از این کنترل بهصورت طراحی در ویژوال استودیو:
- یک پروژه جدید Windows Forms App ایجاد کنید.
- از Toolbox، بخش Printing، کنترل PrintPreviewControl را روی فرم قرار دهید.
- یک کنترل PrintDocument نیز اضافه کنید.
- در قسمت Properties کنترل PrintPreviewControl، ویژگی Document را به PrintDocument متصل کنید.
- در رویداد PrintPage مربوط به PrintDocument محتوای مورد نظر برای چاپ را بنویسید.
ایجاد PrintPreviewControl در فرم با کدنویسی
گاهی اوقات ترجیح داده میشود کنترلها بهصورت دستی در کد ایجاد شوند.
مثال ساده:
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace PrintPreviewControlExample
{
public class MainForm : Form
{
private PrintDocument printDocument;
private PrintPreviewControl previewControl;
public MainForm()
{
this.Text = "نمونه PrintPreviewControl در سی شارپ";
this.Size = new Size(800, 600);
// ایجاد PrintDocument
printDocument = new PrintDocument();
printDocument.PrintPage += PrintDocument_PrintPage;
// ایجاد PrintPreviewControl
previewControl = new PrintPreviewControl();
previewControl.Document = printDocument;
previewControl.Dock = DockStyle.Fill;
previewControl.Zoom = 1.0;
this.Controls.Add(previewControl);
}
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString("سلام دنیا! این متن برای چاپ و پیشنمایش است.",
new Font("Tahoma", 16), Brushes.Black, 100, 100);
}
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
}
}
استفاده از Zoom و StartPage در PrintPreviewControl
برای کنترل بهتر ظاهر پیشنمایش، میتوان بزرگنمایی و صفحه شروع را تغییر داد.
مثال:
previewControl.Zoom = 0.8; // ۸۰٪
previewControl.StartPage = 1; // شروع از صفحه دوم
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
نمایش چند صفحه در کنار هم
برای مشاهده چند صفحه بهصورت گرید:
previewControl.Rows = 2;
previewControl.Columns = 2;
در این حالت ۴ صفحه چاپی در یک نما کنار هم نمایش داده میشود.
ترکیب PrintPreviewControl با سایر کنترلها
از آنجا که PrintPreviewControl روی فرم قرار میگیرد، میتوان آن را با کنترلهای دیگر مثل دکمهها، منوها یا اسلایدرها ترکیب کرد.
مثلاً یک دکمه برای بزرگنمایی بیشتر:
private void btnZoomIn_Click(object sender, EventArgs e)
{
previewControl.Zoom += 0.1;
}
یا یک دکمه برای تغییر صفحه:
private void btnNextPage_Click(object sender, EventArgs e)
{
previewControl.StartPage += 1;
}
یک مثال کاملتر: چاپ متن از TextBox با پیشنمایش
public class MainForm : Form
{
private PrintDocument printDoc;
private PrintPreviewControl previewControl;
private TextBox txtInput;
private Button btnPreview;
public MainForm()
{
this.Text = "پیشنمایش چاپ متن";
this.Size = new Size(800, 600);
txtInput = new TextBox();
txtInput.Multiline = true;
txtInput.Size = new Size(300, 200);
txtInput.Location = new Point(20, 20);
btnPreview = new Button();
btnPreview.Text = "نمایش پیشنمایش";
btnPreview.Location = new Point(20, 240);
btnPreview.Click += BtnPreview_Click;
printDoc = new PrintDocument();
printDoc.PrintPage += PrintDoc_PrintPage;
previewControl = new PrintPreviewControl();
previewControl.Document = printDoc;
previewControl.Location = new Point(350, 20);
previewControl.Size = new Size(400, 500);
this.Controls.Add(txtInput);
this.Controls.Add(btnPreview);
this.Controls.Add(previewControl);
}
private void BtnPreview_Click(object sender, EventArgs e)
{
previewControl.InvalidatePreview();
}
private void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString(txtInput.Text,
new Font("Tahoma", 12), Brushes.Black, 50, 50);
}
}
مزایا و معایب PrintPreviewControl در سی شارپ
-
مزایا:
- انعطاف بالا در طراحی رابط کاربری
- قابلیت ترکیب با سایر کنترلها در فرم
- امکان نمایش چند صفحه در کنار هم
-
معایب:
- نسبت به PrintPreviewDialog کدنویسی بیشتری نیاز دارد
- ظاهر آن ساده است و امکانات آماده (مثل نوار ابزار) ندارد؛ باید بهصورت دستی پیادهسازی شود
نکات حرفهای در استفاده از PrintPreviewControl
- اگر متن یا داده طولانی دارید، حتماً از ویژگی HasMorePages در PrintDocument استفاده کنید تا بهدرستی چند صفحهای مدیریت شود.
- برای متنهای فارسی بهتر است از فونتهایی مانند Tahoma یا B Nazanin استفاده شود.
- میتوانید دکمههای اختصاصی برای کنترل Zoom یا جابجایی بین صفحات بسازید و آنها را به PrintPreviewControl متصل کنید.
- اگر نیاز به طراحی محیطی شبیه نرمافزارهای حرفهای چاپ دارید، PrintPreviewControl انتخاب بهتری نسبت به PrintPreviewDialog است.
جمعبندی
کنترل PrintPreviewControl یکی از ابزارهای قدرتمند سیشارپ برای نمایش پیشنمایش چاپ است. این کنترل با اتصال به PrintDocument محتوای چاپی را قبل از ارسال به پرینتر به کاربر نشان میدهد. برخلاف PrintPreviewDialog، این کنترل روی فرم اصلی برنامه قرار میگیرد و انعطاف بالاتری در طراحی رابط کاربری دارد.
برای استفاده:
یک نمونه PrintDocument ایجاد کنید.
در رویداد PrintPage محتوای چاپی را تعریف کنید.
PrintPreviewControl را روی فرم قرار دهید و Document آن را برابر PrintDocument بگذارید.
در صورت نیاز با ویژگیهایی مانند Zoom، Rows، Columns و StartPage ظاهر پیشنمایش را کنترل کنید.
به این ترتیب شما میتوانید در برنامههای خود محیطی تعاملی برای پیشنمایش چاپ طراحی کنید که هم ساده و هم کاربردی باشد.
دوره های مرتبط

آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.