private void document_PrintPage(object sender, PrintPageEventArgs e)
        {
            // 当printPreviewDialog的show方法触发时,引用这段代码
            PrintPagelayoutControl.Page.PageToPrinterMapping = esriPageToPrinterMapping.esriPageMappingTile;
            // 获取打印分辨率
            short     dpi       = (short)e.Graphics.DpiX;
            IEnvelope devBounds = new EnvelopeClass();
            // 获取打印页面
            IPage page = PrintPagelayoutControl.Page;
            // 获取打印页数
            short printPageCount;

            printPageCount = PrintPagelayoutControl.get_PrinterPageCount(0);
            m_CurrentPrintPage++;
            // 选择打印机
            IPrinter printer = PrintPagelayoutControl.Printer;

            // 获取打印机页大小
            page.GetDeviceBounds(printer, m_CurrentPrintPage, 0, dpi, devBounds);
            // 获取页面大小的坐标范围,即四个角的坐标
            tagRECT deviceRect;
            double  minX, minY, maxX, maxY;

            devBounds.QueryCoords(out minX, out minY, out maxX, out maxY);
            deviceRect.bottom = (int)maxY;
            deviceRect.left   = (int)minX;
            deviceRect.top    = (int)minY;
            deviceRect.right  = (int)maxX;

            // 确定当前打印页面的大小
            IEnvelope visBounds = new EnvelopeClass();

            page.GetPageBounds(printer, m_CurrentPrintPage, 0, visBounds);
            IntPtr hdc = e.Graphics.GetHdc();

            PrintPagelayoutControl.ActiveView.Output(hdc.ToInt32(), dpi, ref deviceRect, visBounds, m_TrackCancel);
            e.Graphics.ReleaseHdc(hdc);
            if (m_CurrentPrintPage < printPageCount)
            {
                e.HasMorePages = true;
            }
            else
            {
                e.HasMorePages = false;
            }
        }
        private void syn(AxPageLayoutControl mainlayoutControl)
        {
            IObjectCopy objectcopy     = new ObjectCopyClass();
            object      tocopymap      = mainlayoutControl.ActiveView.GraphicsContainer;      //获取mapcontrol中的map   这个是原始的
            object      copiedmap      = objectcopy.Copy(tocopymap);                          //复制一份map,是一个副本
            object      tooverwritemap = PrintPagelayoutControl.ActiveView.GraphicsContainer; //IActiveView.FocusMap : The map that tools and controls act on. 控件和工具作用的地图,大概是当前地图吧!!!

            objectcopy.Overwrite(copiedmap, ref tooverwritemap);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(objectcopy);
            IGraphicsContainer mainGraphCon = tooverwritemap as IGraphicsContainer;

            mainGraphCon.Reset();
            IElement pElement = mainGraphCon.Next();
            IArray   pArray   = new ArrayClass();

            while (pElement != null)
            {
                pArray.Add(pElement);
                pElement = mainGraphCon.Next();
            }
            int                pElementCount   = pArray.Count;
            IPageLayout        PrintPageLayout = PrintPagelayoutControl.PageLayout;
            IGraphicsContainer PrintGraphCon   = PrintPageLayout as IGraphicsContainer;

            PrintGraphCon.Reset();
            IElement pPrintElement = PrintGraphCon.Next();

            while (pPrintElement != null)
            {
                PrintGraphCon.DeleteElement(pPrintElement);
                pPrintElement = PrintGraphCon.Next();
            }
            for (int i = 0; i < pArray.Count; i++)
            {
                PrintGraphCon.AddElement(pArray.get_Element(pElementCount - 1 - i) as IElement, 0);
            }
            PrintPagelayoutControl.Refresh();
        }