Как я могу заставить изображение, которое появляется в предварительном просмотре перед печатью, действительно распечататC#

Место общения программистов C#
Ответить
Anonymous
 Как я могу заставить изображение, которое появляется в предварительном просмотре перед печатью, действительно распечатат

Сообщение Anonymous »

В прошлом я использовал Stack Overflow, чтобы найти ответы на многие проблемы. Это мой первый вопрос, так как на этот раз мне не удалось найти ответ, который подошел бы для моей конкретной проблемы. Я надеюсь, что вы сможете помочь, и я сделаю все возможное, чтобы предоставить всю необходимую информацию. У меня есть созданное мной приложение, которое в основном используется для регистрации данных, а не для их написания вручную. Он содержит 4 столбца, у меня есть форма, которая показывает все данные, которые были введены на данный момент в DataGridView. Я пытаюсь распечатать это. Я заставил его работать с помощью printDialog и printDocument, однако перед печатью я хотел бы убедиться, что все выглядит правильно. Я отключил printDialog с помощью printPreviewDialog. Данные отображаются на экране предварительного просмотра нормально, но когда я затем нажимаю значок принтера в этом предварительном просмотре, я просто получаю пустую страницу.
Я новичок в C# из поисков, которые я провел Готово, я понимаю, что он «печатает» в окне предварительного просмотра, и в этот момент моя строка очищается, поэтому, когда я нажимаю значок принтера, печатать уже нечего. Я просто не могу понять свой следующий шаг. Вот что у меня получилось на данный момент.
Событие нажатия кнопки.
private void btnPrint_Click(object sender, EventArgs e)
{
printPreviewDialog1.Document = printDocument1;
string strText = "";
string poBox = "PO BOX";
string clientName = "CLIENT NAME";
string breCount = "BRE COUNT";
string fcCount = "FC COUNT";

strText += poBox.PadRight(25, 'z');
strText += clientName.PadRight(12, 'z');
strText += breCount.PadRight(10, 'z');
strText += fcCount.PadRight(10, 'z');
strText += "\n";

foreach (DataGridViewRow row in dataGridView.Rows)
{
poBox = row.Cells[0].Value.ToString();
strText += poBox.PadRight(25, 'z');
clientName = row.Cells[1].Value.ToString();
strText += clientName.PadRight(12, 'z');
breCount = row.Cells[2].Value.ToString();
strText += breCount.PadRight(10, 'z');
fcCount = row.Cells[3].Value.ToString();
strText += fcCount.PadRight(10, 'z');
strText += "\n";
}

myReader = new StringReader(strText);

if (printPreviewDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}

myReader объявляется внутри основного класса.
public partial class frmView : Form
{
private StringReader myReader;

Мое событие printDocument.
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
float linesPerPage = 0;
float yPosition = 0;
int count = 0;
float leftMargin = e.MarginBounds.Left;
float topMargin = e.MarginBounds.Top;
string line = null;
Font printFont = this.dataGridView.Font;
SolidBrush myBrush = new SolidBrush(Color.Black);

// Work out the number of lines per page, using the MarginBounds.
linesPerPage =
e.MarginBounds.Height / printFont.GetHeight(e.Graphics);

// Iterate over the string using the StringReader, printing each line.
while (count < linesPerPage && ((line = myReader.ReadLine()) != null))
{
// calculate the next line position based on
// the height of the font according to the printing device
yPosition = topMargin + (count * printFont.GetHeight(e.Graphics));

// draw the next line in the rich edit control

e.Graphics.DrawString(line, printFont,
myBrush, leftMargin,
yPosition, new StringFormat());
count++;
}

// If there are more lines, print another page.
if (line != null)
e.HasMorePages = true;
else
e.HasMorePages = false;

if (!printDocument1.PrintController.IsPreview)
{
MessageBox.Show("The log was printed.","Print Status");
myBrush.Dispose();
printPreviewDialog1.Close();
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... t-when-cli
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»