C# 打印词典列表<;字符串,字符串>;归档

C# 打印词典列表<;字符串,字符串>;归档,c#,winforms,C#,Winforms,假设我们在程序中声明了以下行: List<Dictionary<string, string>> list = new List<Dictionary<string, string>>(); List List=新列表(); 因此,我们希望将此列表中的每个成员打印到一个文件中,并显示在单独的页面中,但都是一个文档,如MyDoc.xps。我怎样才能达到我的目的 编辑:我的困难在于如何在打印过程中创建新页面 很抱歉,如果与其他问题重复,我无法在站

假设我们在程序中声明了以下行:

 List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
List List=新列表();
因此,我们希望将此列表中的每个成员打印到一个文件中,并显示在单独的页面中,但都是一个文档,如
MyDoc.xps
。我怎样才能达到我的目的

编辑:我的困难在于如何在打印过程中创建新页面


很抱歉,如果与其他问题重复,我无法在站点线程中获得我的答案:|

一种可行的方法是:

  • 使列表成为全局类成员
  • 使用
    System.Drawing.Printing
    下的
    PrintDocument
    类,并使用其
    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;
    }
    

    请阅读编辑部分。请解释您尝试了什么。您是在Winforms还是WPF中进行此操作?这是专门针对.XPS文档的吗?Winforms。请注意,我说过,
    就像MyDoc.xps一样
    好吧,如果影子向导的答案对你没有帮助,你为什么不按照奥德的建议,把你写的代码发布到现在(“你已经尝试过的”)非常感谢:)这是我问题的答案:)干杯@Hossein这是基于我看到你的问题时得到并回忆起来的旧代码。
    document.PrinterSettings.PrintToFile = true;
    document.PrinterSettings.PrintFileName = "myfile.xps";