此代码不起作用 - 页面大小不会改变:
canvas.Window.Application.ActivePage.PageSheet.get_CellsU("DrawingResizeType").FormulaU = "1";
画布是
AxMicrosoft.Office.Interop.VisOcx.AxDrawingControl canvas;
谁能告诉什么是错的以及如何纠正?
图像 VSD1 显示了原始图表。将值更改为 1 后,它应该看起来像 VSD2。
更新
好的,我用宏记录器发现这是VB代码
【VB代码】
ActiveDocument.DiagramServicesEnabled = visServiceVersion140
Application.ActiveWindow.Page.AutoSize = True
Application.ActiveWindow.Page.AutoSizeDrawing
我在 C# 中尝试了相同的方法,但它引发了 COM 异常
[C#代码]
canvas.Window.Application.ActiveDocument.DiagramServicesEnabled = (int)Visio.VisDiagramServices.visServiceVersion140;
Visio.Page p = (Visio.Page)canvas.Window.Application.ActiveWindow.Page;
p.AutoSize = true;
p.AutoSizeDrawing(); //throws COM exception 0x86DB0C89
异常详细信息 System.Runtime.InteropServices.COMException (0x86DB0C89):
发生异常。在 Microsoft.Office.Interop.Visio.IVPage.AutoSizeDrawing() 在 VisioDemo.Form1.btnReConnect_Click(Object sender, EventArgs ea) 在 C:\Form1.cs:line 121 在 System.Windows.Forms.Control.OnClick(EventArgs e ) 在 System.Windows.Forms.Button.OnClick(EventArgs e) 在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs 事件) 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 在System.Windows.Forms.Control.WndProc(Message& m) 在 System.Windows.Forms.ButtonBase.WndProc(Message& m) 在 System.Windows.Forms.Button.WndProc(Message& m) 在 System.Windows.Forms.Control。 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 上的 ControlNativeWindow.OnMessage(Message& m) System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,
************** 加载的程序集 ************** mscorlib 程序集版本:2.0.0.0 Win32 版本:2.0.50727.5472 (Win7SP1GDR.050727-5400)
代码库:file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
VisioDemo 程序集版本:1.0.0.0 Win32 版本:1.0.0.0
代码库:file:///C:/bin/x86/Debug/VisioDemo.exe
Microsoft.Office.Interop.VisOcx 程序集版本:14.0.0.0 Win32 版本:14.0.4756.1000 代码库:file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Office.Interop.VisOcx/14.0.0.0__71e9bce111e9429c/Microsoft。 Office.Interop.VisOcx.dll