PDA

View Full Version : سوال: اشکال برنامه (print) ی من چیه؟



T A H O R A
شنبه 03 بهمن 1388, 14:51 عصر
سلام
من یه برنامه از روی پی دی اف اموزشی سی شارپ نوشتم که یک تکس بوکس رو چاپ کنه ولی خطا میده واجرا نمیشه
میشه راهنماییم کنید!
می خوام امکانات مختلف روداشته باشه مثل تعداد صفحات چاپ، تعداد تکرار چاپ، انتخاب چاپگر والی اخر
ممنون

hamidreza20
شنبه 03 بهمن 1388, 16:23 عصر
سلام
من یه برنامه از روی پی دی اف اموزشی سی شارپ نوشتم که یک تکس بوکس رو چاپ کنه ولی خطا میده واجرا نمیشه
میشه راهنماییم کنید!
می خوام امکانات مختلف روداشته باشه مثل تعداد صفحات چاپ، تعداد تکرار چاپ، انتخاب چاپگر والی اخر
ممنون

دوست عزیز
برنامه باز نمیشه نسخه دات نت شما چیه؟ برای من 2010 .

التماس دعا...

T A H O R A
شنبه 03 بهمن 1388, 16:35 عصر
دوست عزیز
برنامه باز نمیشه نسخه دات نت شما چیه؟ برای من 2010 .

التماس دعا...
2008
خودم امتحان كردم بازميشه ، فقط بايد اول از حالت زيپ خارج بشه بعد بازش كنيد

AliRezaPro
شنبه 03 بهمن 1388, 19:45 عصر
سلام
من یه برنامه از روی پی دی اف اموزشی سی شارپ نوشتم که یک تکس بوکس رو چاپ کنه ولی خطا میده واجرا نمیشه
میشه راهنماییم کنید!
می خوام امکانات مختلف روداشته باشه مثل تعداد صفحات چاپ، تعداد تکرار چاپ، انتخاب چاپگر والی اخر
ممنون
پروژه رو دیدم مشکلی نداشت ، فقط دوتا غلط املایی داشتی همین
البته من پروسه ی پرینت رو چک نکردم ولی فقط غلط املایی برطرف شد اوکی شد

T A H O R A
شنبه 03 بهمن 1388, 20:51 عصر
پروژه رو دیدم مشکلی نداشت ، فقط دوتا غلط املایی داشتی همین
البته من پروسه ی پرینت رو چک نکردم ولی فقط غلط املایی برطرف شد اوکی شد

دوست عزيز من اگه لطف مي كردي و غلط املايي هاشو مشخص مي كردي خيلي ممنونت ميشدم!

AliRezaPro
شنبه 03 بهمن 1388, 21:19 عصر
اینو کپی کن


private void btnPrint_Click(object sender, EventArgs e)
{
PrintDocument objPrintDcument = new PrintDocument();
objPrintDcument.DocumentName = "tecdc";
printDialog1.AllowPrintToFile = false;
printDialog1.AllowSelection = false;
printDialog1.AllowSelection = false;
printDialog1.Document = objPrintDcument;
if ( printDialog1.ShowDialog() == DialogResult.OK)
{
objStreamToPrint = new StreamReader(strFileName );
objPrintFont = new Font ("Tohoma" , 10);
objPrintDcument.PrinterSettings = printDialog1.PrinterSettings;
objPrintDcument.PrintPage += new PrintPageEventHandler(ptrPage);
objPrintDcument.Print();
objStreamToPrint.Close();
objStreamToPrint = null;
}

}

hamidreza20
شنبه 03 بهمن 1388, 21:22 عصر
2008
خودم امتحان کردم بازمیشه ، فقط باید اول از حالت زیپ خارج بشه بعد بازش کنید

دوست عزیز
فایل پیوست را مشاهده کنید . این خطا را میده
43101

T A H O R A
شنبه 03 بهمن 1388, 21:27 عصر
كدهاي كه خودمنوشته بودم حذف كردم واينو نوشتم ولي خطا داد
اينم خطاش




Error 1 The name 'ptrPage' does not exist in the current context C:\Documents and Settings\parmis\Desktop\print\WindowsFormsApplicat ion5\Dialogs.cs 39 72 WindowsFormsApplication5

T A H O R A
شنبه 03 بهمن 1388, 21:36 عصر
دوست عزیز
فایل پیوست را مشاهده کنید . این خطا را میده
43101

نمیدونم چرا؟
این کل کدی که برای یک دکمه پرینت نوشتم ویه تکس باکس خالی


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Printing;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
private string strFileName;
private StreamReader objStreamToPrint;
private Font objPrintFont;
public Form1()
{
InitializeComponent();
}
private void btnPrint_Click(object sender, EventArgs e)
{
PrintDocument objPrintDcument = new PrintDocument();
objPrintDocument.DocumentName = "tecdc";
printDialog1.AllowPrintToFile = false;
printDialog1.AllowSelection = false;
printDialog1.AllowSelection = false;
printDialog1.Document = objPrintDcument;
if ( printDialog1.ShowDialog() == DialogResult.OK)
{
objStreamToPrint = new StreamReader(strFileName );
objPrintFont = new Font ("Tohoma" , 10);
objPrintDocument.PrinterSettings = printDialog1.PrinterSettings;
objPrintDcument.PrintPage += new PrintPageEventHandler(ptrPage);
objPrintDcument.Print();
objStreamToPrint.Close();
objStreamToPrint = null;
}
}
private void ptrPage(object sender, PrintPageEventArgs e)
{
float sngLinesPerpage = 0;
float sngVerticalPositio = 0;
int intLineCount = 0;
float sngLeftMargin = e.MarginBounds.Left;
float sngTopMargin = e.MarginBounds.Top;
string strLine;
sngLinesPerpage = e.MarginBounds.Height / objPrintFont.GetHeight(e.Graphics);
strLine = objStreamToPrint.ReadLine();
while ((intLineCount < sngLinesPerpage) && (strLine != null))
{
sngVerticalPositio = sngTopMargin + (intLineCount * objPrintFont.GetHeight(e.Graphics));
e.Graphics.DrawString(strLine, objPrintFont, Brushes.Black, sngLeftMargin, sngVerticalPositio, new StringFormat());
intLineCount = intLineCount + 1;
if (intLineCount < sngLinesPerpage)
{
strLine = objStreamToPrint.ReadLine();
}
}
if (strLine !=null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
}
private void txtFile_TextChanged(object sender, EventArgs e)
{
}
}
}

m_hasanpour
شنبه 03 بهمن 1388, 21:36 عصر
دوست عزیز من اگه لطف می کردی و غلط املایی هاشو
مشخص می کردی خیلی ممنونت میشدم!
با سلام خدمت دوست عزیزم شما نامی را که درست کرده بودید در فراخوانی اشتباهینوشته بودید. من آن را اصلاح کردم و براتون فرستادم. با تشکر

SMRAH1
یک شنبه 04 بهمن 1388, 15:09 عصر
سلام
برنامه چند تا اشتباه داشت که به اختصار بیان می کنم:
1) اشتباه در ورود نام برخی متغیر ها (VS خودش این خطا ها رو مشخص میکنه).ابن مشکلات در پست های قبلی هم اشاره شده است.
2) برنامه می خواهد اطلاعات رو از یک فایل بخواند در نتیجه یک متغیر رشته ای و یک Stream برای این منظور آماده شده بود.

راه حل اینه که شما برنامه رو طوری تغییر بدید که از textBox بخونه.برای همین منظور متغیری به نام lineNum معرفی شد و برنامه از:

txtFile.Lines[lineNum]
برای خوندن خط بعدی استفاده میکنه.
برای اینکه هم بتونید شماره صفحه بزنید نیز کدی پیاده شده (شماره صفحه در هر صفحه در اولین خط رسم شده و در زیر آن یک خط سرتاسری کشیده می شود).از متغیر pageNum نیز برای پیدا کردن شماره صفحه استفاده شده است.
برنامه تکمیل شده (و تست شده) رو می تونید در ضمیمه ببینید.
موفق باشید