Печать элемента управления ListView на C#
Всем привет,
Я создал ресторан POS и у меня возникли проблемы с печатью listview
цель состоит в том, чтобы напечатать в квитанции следующее
Количество Продукта Цена Единицы Итого
Мне удалось с помощью кодирования распечатать его, но у меня есть еще одна проблема
используя следующий код
graphics.DrawString(" " + listView1.Items[0].SubItems[0].Text + " " + listView1.Items[0].SubItems[1].Text + " " + listView1.Items[2].SubItems[0].Text + " " + listView1.Items[0].SubItems[3].Text, new Font("Arial Bold", 11), new SolidBrush(Color.Black), startX, startY + Offset);
проблема в том, что это печатает только одну строку listview
Я попытался добавить несколько строк предыдущего кода, чтобы иметь возможность печатать 6 строк
но это дает ошибку, когда любая из строк пуста
как заставить его печатать все элементы и подпункты в listview динамически в зависимости от количества строк, добавленных пользователем?
Что я уже пробовал:
вот полный код печати
graphics.DrawString(" " + listView1.Items[0].SubItems[0].Text + " " + listView1.Items[0].SubItems[1].Text + " " + listView1.Items[2].SubItems[0].Text + " " + listView1.Items[0].SubItems[3].Text, new Font("Arial Bold", 11), new SolidBrush(Color.Black), startX, startY + Offset);
[no name]
"проблема в том, что это печатает только одну строку listview", нет, это не проблема, это именно то, что вы сказали ему сделать.
"добавьте несколько строк предыдущего кода, чтобы иметь возможность печатать 6 строк", хорошо... действительно плохая идея, но ладно.
"но это дает ошибку, когда какая-либо из строк пуста", поэтому проверьте пустую строку.
Joey Arnanzo
Ладно, возможно, я действительно не указал, чего хочу
Пользователь нажимает кнопку, добавляет количество в текстовое поле, нажимает кнопку addtocart, и это переходит в listview
теперь количество напечатанных строк listview статично с количеством строк I write in code
Поэтому, если я помещаю 6 строк на 6 строк, пользователь должен добавить 6 элементов в listview, чтобы иметь возможность печатать
Я хочу, чтобы он печатал количество строк, которые вводит пользователь, в соответствии с тем, что он выбирает
есть ли во мне хоть какой-то смысл? не знаю, почему это чувство трудно объяснить
В любом случае спасибо за ваш ответ
[no name]
"Я действительно не указывал, чего хочу", да, я вижу, чего ты хочешь. Чего я не вижу, так это вопроса. Какой у вас вопрос? Почему вы не можете написать простой цикл for? Это основное Программирование 101.....
Joey Arnanzo
Ну, хорошо, что вы понимаете мой вопрос, и мне жаль, если я недостаточно хорош, чтобы понять основы программирования, но я не программист, я просто парень, пытающийся помочь другу, который не может позволить себе платить настоящему программисту, ваш тон очень снисходителен, но спасибо за вашу помощь, я думаю, что теперь я должен искать, как сделать цикл, я прав?
[no name]
Это кажется "снисходительным", потому что мы не являемся веб-сайтом" научи меня программированию". Да, вы должны посмотреть, как написать цикл. тогда сделай своему другу подарок. Возьмите книгу по основам программирования и попросите его пройти все упражнения. Тогда бы он все это знал.
Garth J Lancaster
"мы не являемся веб-сайтом" научи меня программированию"."
не так ли ? - Тогда я, должно быть, нахожусь не в том месте - да, мы являемся веб - сайтом "научи меня программированию" - иногда люди приходят к нам с большим, иногда с меньшим (пониманием)
Joey Arnanzo
я смог решить эту проблему с помощью цикла, но теперь у меня есть еще одна проблема, он печатает строки на одной строке, а не ниже друг друга, Вот код, который я использовал
for (int i = 0; i < listView1.Предметы.Граф; i++)
{
int ii = 1;
второй++;
графика.DrawString(" " + listView1.Элементы[я].Подпункты[0].Текст + мыши listview1.Элементы[я].Подпункты[1].Текст + мыши listview1.Элементы[я].Подпункты[2].Текст + мыши listview1.Элементы[я].Подпункты[3]. Текст, новый шрифт ("Arial Bold", 11),
новая твердая кисть(цвет.Черный), startX, startY + Offset);
}
Смещение = Смещение + 20;
Garth J Lancaster
хорошо, я не уверен, что это за графическая среда, но, скажем, "StartY" - это вертикальная ось, увеличивающаяся от верхней части страницы/квитанции к нижней - если бы это было так, то для каждой "итерации" цикла вы бы добавили высоту строки ? пиксели к стартовой переменной (или, может быть, "смещение", как у вас)
очевидно, что если ориентация StartY отличается, Вы можете в конечном итоге вычесть высоту линии из StartY ... Я не знаю, как вы получите высоту строки, хотя это зависит от вашего шрифта и от того, сколько полей вам нужно между строками и т. д. Учитывая, что у вас есть Arial/11, попробуйте 11 + 2 выше + 2 ниже = 15 для высоты строки ...
Garth J Lancaster
Я не видел 'Offset = Offset + 20;' в этом вчерашнем намеке - это должно быть внутри цикла
Joey Arnanzo
- Спасибо, Гарт. это сработало идеально
Garth J Lancaster
круто-я поставил это как "решение", хотя это, очевидно, всего лишь часть-надеюсь, вы не будете обескуражены - оставайтесь здесь, Читайте некоторые статьи, учитесь кодировать по ним, задавайте вопросы-вопреки мнению некоторых, именно поэтому мы здесь
Joey Arnanzo
Большое спасибо за Твою поддержку и поддержку, приятель.. Я действительно увлекаюсь программированием, мне нравится то, что вы, ребята, делаете, и я надеюсь, что скоро смогу им стать.
Кроме того, моя программа теперь завершена и работает, большое спасибо за вашу помощь