В прошлом я использовал 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
Как я могу заставить изображение, которое появляется в предварительном просмотре перед печатью, действительно распечатат ⇐ C#
Место общения программистов C#
1738003377
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();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79391854/how-can-i-get-the-image-that-appears-in-print-preview-to-actually-print-when-cli[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия