C# 如何在WinC窗体中并行迭代表?
我有一个图书馆,我想为它们打印图书馆标签。从GridControl中选择书籍并单击“打印标签”按钮时,程序将在pdf文件上创建标签,如下所示:C# 如何在WinC窗体中并行迭代表?,c#,winforms,itext,iteration,C#,Winforms,Itext,Iteration,我有一个图书馆,我想为它们打印图书馆标签。从GridControl中选择书籍并单击“打印标签”按钮时,程序将在pdf文件上创建标签,如下所示: private void btnQRPrintLabels_Click(object sender, EventArgs e) { // These are books' ids. Normally, these are retrieved from GridControl element. var books_ids = new Lis
private void btnQRPrintLabels_Click(object sender, EventArgs e)
{
// These are books' ids. Normally, these are retrieved from GridControl element.
var books_ids = new List<int>() {1, 2, 5, 6, 7, 12};
// I don't use PanelControl. But in the future, maybe I can use it later.
CreateLabels(books_ids, panelControl1);
}
最后,标签方法的内容:
这些代码为我带来了如下标签:
private void btnQRPrintLabels_Click(object sender, EventArgs e)
{
// These are books' ids. Normally, these are retrieved from GridControl element.
var books_ids = new List<int>() {1, 2, 5, 6, 7, 12};
// I don't use PanelControl. But in the future, maybe I can use it later.
CreateLabels(books_ids, panelControl1);
}
但我想得到这样的标签:
private void btnQRPrintLabels_Click(object sender, EventArgs e)
{
// These are books' ids. Normally, these are retrieved from GridControl element.
var books_ids = new List<int>() {1, 2, 5, 6, 7, 12};
// I don't use PanelControl. But in the future, maybe I can use it later.
CreateLabels(books_ids, panelControl1);
}
因为如果我能同时获得标签,我就能很容易地把它打印到电脑标签上。这是我要打印的计算机标签:
如何并排迭代表格?只需添加页面级表格2列6行,并将每个标签放入该页面级表格中的单个单元格中。使用一个带有
new PdfPTable(2) { WidthPercentage = 100 }
然后将所有内部表添加到此表中,最后将外部表添加到文档中。这样就不需要使用左/右对齐切换
:编辑:
var table = new PdfPTable(2) { WidthPercentage = 100 };
foreach (var book_id in books_ids)
{
// Book's informations are retrieved from Linq Connect Model.
var _connection = new LinqtoSQLiteDataContext();
var book = _connection.books.SingleOrDefault(b_no => b_no.id == book_id);
// Outer table to get rounded corner...
// Inner table: First cell for QR code and second cell for book's informations.
var inner_table = new PdfPTable(2) { WidthPercentage = 100 };
inner_table.DefaultCell.Border = Rectangle.NO_BORDER;
var inner_measurements = new[] { 40f, 60f };
inner_table.SetWidths(inner_measurements);
// Generate QR code in the `Tools` class, `GenerateQR` method.
System.Drawing.Image image = Tools.GenerateQR(100, 100, book?.isbn);
var pdfImage = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Jpeg);
var qr = iTextSharp.text.Image.GetInstance(pdfImage);
var a = new PdfPCell(qr) { Border = Rectangle.NO_BORDER };
var b = new PdfPCell(new Phrase(book?.name, font_normal)) { Border = Rectangle.NO_BORDER };
inner_table.AddCell(a);
inner_table.AddCell(b);
PdfPCell labelCell = new PdfPCell(inner_table)
{
CellEvent = new RoundRectangle(),
Border = Rectangle.NO_BORDER,
Padding = 2,
HorizontalAlignment = Element.ALIGN_LEFT
};
table.AddCell(labelCell);
}
doc.Add(table);
对不起,我不明白我是怎么做到的?我在谷歌上搜索到:*但我没有找到任何相关信息。我指的是整个页面上的表格,因为每个标签使用表格,标签布局使用下一个表格。是的,因为我认为,我必须将表用于圆形的录像机。我不明白在books\u id循环中创建foreach var book\u id内部表时如何导入外部表?嗯。。。我在上面编辑了我的文字,并发布了你的代码和一些修改。我是在记事本中写的,所以它可能无法立即运行-但使用这种结构,您应该了解如何获得所需的输出。