1

我想让用户在 devexpress 打印预览上移动东西并仅在完成后打印。如果可能的话,我能找到一些可以开始寻找的方向吗?(我没有时间查看整个文档,这听起来可能很懒惰,但 devx 在我拥有的短时间内有点庞大。)

4

1 回答 1

1

我认为您不能直接在打印预览中执行此操作,但您可以提供一个按钮来启动 XtraReports 设计器并从当前显示的文档中传递布局。当用户完成编辑后,您可以在打印预览中重新加载文档,根据需要加载其新布局。您可能需要大量自定义设计器以删除限制用户仅编辑某些方面的各种选项 - 您可以隐藏大部分功能,包括数据源、组件托盘等:

设计师视频

设计师文档

在设计器中隐藏选项

if(EditLayout(document))
   RefreshDocument();

public static bool EditLayout(XtraReport document)
{
        using (var designer = new XRDesignRibbonForm())
        {
            designer.OpenReport(document);
            XRDesignPanel activePanel = designer.ActiveDesignPanel;
            activePanel.AddCommandHandler(new DesignerCommandHandler(activePanel));
            HideDesignerOptions(activePanel);
            designer.ShowDialog();
            changesMade = activePanel.Tag != null && (DialogResult)activePanel.Tag == DialogResult.Yes;  //set this tag in your DesignerCommandHandler
            activePanel.CloseReport();
        }
        return changesMade;
}

最后,一些用于更改文档/报告布局的实用方法:

    internal static byte[] GetLayoutData(this XtraReport report)
    {
        using (MemoryStream mem = new MemoryStream())
        {
            report.SaveLayoutToXml(mem);
            return mem.ToArray();
        }
    }

    internal static void SetLayoutData(this XtraReport report, byte[] data)
    {
        using (var mem = new MemoryStream(data))
        {
            report.LoadLayoutFromXml(mem);
        }
    }
于 2013-10-24T08:22:43.147 回答