Распечатать список словаряв файл - PullRequest
0 голосов
/ 25 декабря 2011

Предположим, что мы объявили строку ниже в нашей программе:

 List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();

поэтому мы хотим напечатать каждого члена этого списка в файл и на отдельной странице, но все в одном документе, как MyDoc.xps. Как я могу сделать, чтобы достичь своей цели?

РЕДАКТИРОВАТЬ: Моя проблема в том, как я могу создать новую страницу в процессе печати?

Извините, если он дублирует другие вопросы, я не могу получить ответ в темах сайта. : |

1 Ответ

3 голосов
/ 25 декабря 2011

Один из способов работы заключается в следующем:

  1. Сделать список глобальным членом класса
  2. Используйте класс PrintDocument в System.Drawing.Printing и используйте событие PrintPage для установки страниц по одной.

Пример кода:

private List<Dictionary<string, string>> myList = new List<Dictionary<string, string>>();
private int pageIndex = 0;
private void PrintButton_Click(object sender, EventArgs e)
{
    PrintDocument document = new PrintDocument();
    document.PrintPage += new PrintPageEventHandler(document_PrintPage);
    document.Print();
}

void document_PrintPage(object sender, PrintPageEventArgs e)
{
    if (pageIndex >= myList.Count)
    {
        e.HasMorePages = false;
        return;
    }

    Dictionary<string, string> curData = myList[pageIndex];
    List<string> lines = new List<string>();
    lines.Add("Items count: " + curData.Count);
    curData.Keys.ToList().ForEach(key =>
    {
        lines.Add(string.Format("Key: {0}, Value: {1}", key, curData[key]));
    });
    e.Graphics.DrawString(string.Join("\n", lines), this.Font, SystemBrushes.WindowText, 0, 0);
    pageIndex++;
    e.HasMorePages = pageIndex < myList.Count;
}

На каждой напечатанной странице будет вызываться метод document_PrintPage. Пока вы не установите для e.HasMorePages значение false, он будет продолжать печатать новые страницы.

Редактировать : для принудительного создания файла .xps просто добавьте две строки при создании документа для печати:

document.PrinterSettings.PrintToFile = true;
document.PrinterSettings.PrintFileName = "myfile.xps";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...