PDA

View Full Version : پرینت در سی شارپ



abnoos
پنج شنبه 02 مهر 1383, 13:15 عصر
سلام به همه
آیا می توان بدون استفاده از crystal report نتایج جستجو یی که در textbox ها و دیگر componenet ها نمایش داده می شوند پرینت گرفت .
همچنین از نتایجی که در datagrid مشاهده می شود ( زیاد می باشند )ونیاز به حرکت scroll دارند پرینت گرفت .
ممنون

ara_prg
یک شنبه 05 مهر 1383, 09:15 صبح
میتونی از شئی PrintDocument استفاده کنی

اینم یک مثال




Use the System.ComponentModel, System.Windows.Forms, System.Drawing, System.Drawing.Printing, and System.IO namespaces for this example.

[Visual Basic]
Public Class PrintingExample
Inherits System.Windows.Forms.Form
Private components As System.ComponentModel.Container
Private printButton As System.Windows.Forms.Button
Private printFont As Font
Private streamToPrint As StreamReader

Public Sub New()
' The Windows Forms Designer requires the following call.
InitializeComponent()
End Sub

' The Click event is raised when the user clicks the Print button.
Private Sub printButton_Click(sender As Object, e As EventArgs)
Try
streamToPrint = New StreamReader("C:\My Documents\MyFile.txt")
Try
printFont = New Font("Arial", 10)
Dim pd As New PrintDocument()
AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
pd.Print()
Finally
streamToPrint.Close()
End Try
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub

' The PrintPage event is raised for each page to be printed.
Private Sub pd_PrintPage(sender As Object, ev As PrintPageEventArgs)
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim leftMargin As Single = ev.MarginBounds.Left
Dim topMargin As Single = ev.MarginBounds.Top
Dim line As String = Nothing

' Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)

' Print each line of the file.
While count < linesPerPage
line = streamToPrint.ReadLine()
If line Is Nothing Then
Exit While
End If
yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
count += 1
End While

' If more lines exist, print another page.
If Not (line Is Nothing) Then
ev.HasMorePages = True
Else
ev.HasMorePages = False
End If
End Sub


' The Windows Forms Designer requires the following procedure.
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.printButton = New System.Windows.Forms.Button()

Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(504, 381)
Me.Text = "Print Example"

printButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
printButton.Location = New System.Drawing.Point(32, 110)
printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
printButton.TabIndex = 0
printButton.Text = "Print the file."
printButton.Size = New System.Drawing.Size(136, 40)
AddHandler printButton.Click, AddressOf printButton_Click

Me.Controls.Add(printButton)
End Sub

' This is the main entry point for the application.
Public Shared Sub Main()
Application.Run(New PrintingExample())
End Sub

End Class

[C#]
public class PrintingExample : System.Windows.Forms.Form
{
private System.ComponentModel.Container components;
private System.Windows.Forms.Button printButton;
private Font printFont;
private StreamReader streamToPrint;

public PrintingExample() : base()
{
// The Windows Forms Designer requires the following call.
InitializeComponent();
}

// The Click event is raised when the user clicks the Print button.
private void printButton_Click(object sender, EventArgs e)
{
try
{
streamToPrint = new StreamReader
("C:\\My Documents\\MyFile.txt");
try
{
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler
(this.pd_PrintPage);
pd.Print();
}
finally
{
streamToPrint.Close();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

// The PrintPage event is raised for each page to be printed.
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = ev.MarginBounds.Left;
float topMargin = ev.MarginBounds.Top;
string line = null;

// Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height /
printFont.GetHeight(ev.Graphics);

// Print each line of the file.
while(count < linesPerPage &&
((line=streamToPrint.ReadLine()) != null))
{
yPos = topMargin + (count *
printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
count++;
}

// If more lines exist, print another page.
if(line != null)
ev.HasMorePages = true;
else
ev.HasMorePages = false;
}


// The Windows Forms Designer requires the following procedure.
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.printButton = new System.Windows.Forms.Button();

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(504, 381);
this.Text = "Print Example";

printButton.ImageAlign =
System.Drawing.ContentAlignment.MiddleLeft;
printButton.Location = new System.Drawing.Point(32, 110);
printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
printButton.TabIndex = 0;
printButton.Text = "Print the file.";
printButton.Size = new System.Drawing.Size(136, 40);
printButton.Click += new System.EventHandler(printButton_Click);

this.Controls.Add(printButton);
}

// This is the main entry point for the application.
public static void Main(string[] args)
{
Application.Run(new PrintingExample());
}
}





اگر باز سوال داشتی بگو تا اگر بلد باشم راهنمائیت کنم :wink:

ILYA
شنبه 25 مهر 1383, 10:11 صبح
سلام به همه
من دستورات زیر رو که ظاهرا از msdn هست امتحان کردم و این طور که متوجه شدم یک فایل txt را که مسیر و نام اون مشخص شده رو پرینت می کنه .
من می خوام بدونم چه دستوراتی باید به اون اضافه کنم تا از فرمم وهمچنین" محتویات نتیجه جستجو که در datagrid وجود داره" رو پرینت کنم . هرچی توی msdn گشتم پیدا نکردم .

ILYA
چهارشنبه 29 مهر 1383, 15:26 عصر
؟؟؟ چرا هیچ کس به من جواب نمی ده ؟
آیا اصلا میشه همچین کاری کرد ؟

seastars
یک شنبه 10 آبان 1383, 13:48 عصر
من یک برنامه دارم که می تونه از یک فرم به صورت کلی در سی شارپ پرینت بگیره.
اگه هکین برات خوبه به من mail بزن برات بفرستم

my_seastars@yahoo.com

mohammad_s20
یک شنبه 16 مرداد 1384, 17:59 عصر
سلام منم با چنین مشکلی بر خوردم می خوام از اطلاعات داخل فرم پرینت بگیرم خواهش می کنم کمکم کنید

فاطمه هاشمیان
یک شنبه 16 مرداد 1384, 23:41 عصر
--------------------------------------------------------------------------------------------------------------------
من یک برنامه دارم که می تونه از یک فرم به صورت کلی در سی شارپ پرینت بگیره.
--------------------------------------------------------------------------------------------------------------------
میشه برنامه رو سایت بذارید تا بقیه هم بتونن استفاده کنن
با تشکر

SeZaR.Rapper
پنج شنبه 18 مهر 1387, 09:43 صبح
سلام
من میخوام از فرمم پرینت بگیرم، از چه دستوری باید استفاده کنم؟
ممنون میشم از افرادی که کمکم کنن.

Alen
پنج شنبه 18 مهر 1387, 12:22 عصر
سلام به همه
من دستورات زیر رو که ظاهرا از msdn هست امتحان کردم و این طور که متوجه شدم یک فایل txt را که مسیر و نام اون مشخص شده رو پرینت می کنه .
من می خوام بدونم چه دستوراتی باید به اون اضافه کنم تا از فرمم وهمچنین" محتویات نتیجه جستجو که در datagrid وجود داره" رو پرینت کنم . هرچی توی msdn گشتم پیدا نکردم .

بايد از رويداد PrintPage ، كلاس PrintDocument استفاده كنيد
اگه اشتباه نكنم يه همچين كدي


e.Graphics.DrawString(dst.Tables(0).Rows(0)(0).ToS tring(), printFont, Brushes.Black, leftMargin, yPos, New StringFormat())


كار رو راه ميندازه (البته اين با VB هستش)سعي ميكنم يه مثال ساده با #C رو تا بعدازظهر up كنم

ali_kashani
جمعه 19 مهر 1387, 00:14 صبح
سلام

http://barnamenevis.org/forum/showthread.php?t=123709

Alen
جمعه 19 مهر 1387, 16:41 عصر
سلام دوستان ببخشید دیر شد
این یه مثال ساده
ذکر این مطلب که این مثال صرفا برای آشنایی مختصر در نحوه استفاده از شی printdocument می باشد
ونه مبنایی برای کد نویسی در C# ضروری است
چون ممکن است تمامی جوانب شی گرایی و کد نویسی صحیح در آن رعایت نشده باشد
در ضمن ساختار جدولی که از اون استفاده کردم رو ضمیمه کردم تا باعث سردر گمی دوستان تازه کار نشوم