2009-01-20 9 views
0

Je pratique une petite automatisation de dessin avec Visio 2003. Cependant, je rencontre un problème en tenant compte de MSDN et en l'intégrant dans mon code. Je fais probablement une erreur très novice. Cependant, après des jours de recherche sur Internet, je n'ai pas encore mis en œuvre une solution. J'essaye simplement d'ouvrir un pochoir à partir d'un tbClick. Le site MSDN me demande d'utiliser DrawingControl.Src pour ouvrir le gabarit. Toutefois, lorsque j'applique DrawingControl au code et compile, j'obtiens cette erreur: Une référence d'objet est requise pour le champ non statique, la méthode ou la propriété 'VisOcx.IDrawingCopntrol.Src.get' (CS0120). Voici un extrait de code qui montre les ressources de l'espace de noms et la fonction que j'essaie de mettre en œuvre.Basic Visio 2003 C# Interaction, drawingControl

Je suis également ouvert à toutes les suggestions concernant le code.

//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; 
} 

Je pense que je suis beaucoup plus proche de faire ce travail de code. Je reçois maintenant l'erreur, « Pas de surcharge pour les matchs délégué « System.EventHandler »(CSO123) « Qed2_elevation_stencil_tbClick ». Voici le code mis à jour. Nous vous remercions à l'avance pour tous ceux qui sont prêts à aider.

// 
// 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; 
     } 
    } 

Répondre

0

Vous essayez d'accéder au contrôle de dessin statiquement, quand il doit être instancié pour l'utilisation. Voici un walkthrough qui devrait aider

+0

J'ai passé en revue le site Web et ai téléchargé leur code, merci pour ce lien. rendre la fonction statique? L'application sur le site que vous m'avez indiqué a ce type de fonction mais leur fonction était statique –

+0

Je m'excuse cmsjr, cette affirmation précédente n'est pas vrai. essaient actuellement de faire fonctionner leur code. Merci encore, je posterai bientôt avec un résultat. –