2009-01-20 71 views
0

我在使用Visio 2003進行一些自動繪圖工作。但是,我遇到了一個問題,就是MSDN提到的並將其合併到我的代碼中。我可能犯了一個非常新手的錯誤。但是,在搜索互聯網之後,我還沒有實施解決方案。基本Visio 2003 C#交互,drawingControl

我想從tbClick打開一個模具。 MSDN站點告訴我使用DrawingControl.Src打開模板。但是,當我將DrawingControl應用於代碼並編譯時,出現此錯誤:非靜態字段,方法或屬性'VisOcx.IDrawingCopntrol.Src.get'(CS0120)需要對象引用。下面是一段代碼,顯示了命名空間資源和我試圖實現的功能。

我接受任何和所有有關代碼的建議。

//namespace 
using System; 
using System.Collections.Generic; 
using System.Drawing; 
using System.Windows.Forms; 
using System.Diagnostics; 
using System.Runtime.Serialization; 
using System.Runtime.InteropServices; 
using Visio1 = Microsoft.Office.Interop.Visio; 
using Visio2 = VisOcx; 

//function 
void Qed2_elevation_stencil_tbClick(object sender, EventArgs e) 
{ 
    try 
    { 
     Visio2.DrawingControl.Src = "C:\\Drawing.vsd"; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 

    return; 
} 

我覺得我更接近使此代碼的工作。我現在得到的錯誤,「不超載的‘Qed2_elevation_stencil_tbClick’匹配委託‘System.EventHandler’(CSO123)。下面是更新的代碼。謝謝你在前進的人誰願意幫助。

// 
// qed2_elevation_stencil_tb 
// 
this.qed2_elevation_stencil_tb.ToolTipText = "QED2 Front Elevation"; 
this.qed2_elevation_stencil_tb.Click += new  
system.EventHandler(this.Qed2_elevation_stencil_tbClick); 

using System; 
using System.Configuration; 
using System.Collections.Generic; 
using System.Collections; 
using System.Data; 
using System.Drawing; 
using System.Windows.Forms; 
using System.Diagnostics; 
using System.Runtime.Serialization; 
using System.Runtime.InteropServices; 
using System.IO; 


using Visio1 = Microsoft.Office.Interop.Visio; 
using Visio2 = VisOcx; 
using Visio3 = AxMicrosoft.Office.Interop.VisOcx; 

public partial class MainForm : Form 
{ 


    public MainForm() 
    { 
     // 
     // The InitializeComponent() call is required for Windows Forms designer support. 
     // 
     InitializeComponent(); 

     // 
     // TODO: Add constructor code after the InitializeComponent() call. 
     // 
    } 

    private Visio1.Application VisApp = null; 
    private Visio1.Page   VisPage = null;  
    private Visio1.Document  VisDocument = null; 
    private Visio1.Documents VisDocuments = null; 
    private Visio1.Window  VisWindow = null; 
    private Visio1.Document  VisStencil = null; 

private void Qed2_elevation_stencil_tbClick(ref Visio1.Documents visDocuments) 

    { 
     string stencilPath = System.IO.Path.Combine(@"C:\\Documents and Settings\\MGPF50\\My Documents\\Visio Stencils", @"Front Elevation Stencil.vss"); 

     try 
     { 
      VisStencil = visDocuments.OpenEx(stencilPath, 
       (short)Visio1.VisOpenSaveArgs.visOpenRO 
       + (short)Visio1.VisOpenSaveArgs.visOpenHidden 
       + (short)Visio1.VisOpenSaveArgs.visOpenMinimized 
       + (short)Visio1.VisOpenSaveArgs.visOpenNoWorkspace); 
     } 
     catch (COMException exp) 
     { 
      MessageBox.Show("Error Loading Stencil: " + stencilPath + exp.Message); 
      throw exp; 
     } 
    } 

回答

0

你試圖靜態訪問圖形控件,當它需要實例化使用時,這裏有一個walkthrough,應該有所幫助。

+0

我已經瀏覽了網站並下載他們的代碼,感謝你的這個鏈接。使函數靜態?您指向我的網站上的應用程序具有此類功能,但它們的功能是靜態的。 – 2009-01-20 19:28:22