Базовое взаимодействие Visio 2003 C #, DrawingControl - PullRequest
0 голосов
/ 20 января 2009

Я немного увлекаюсь автоматизацией рисования с Visio 2003. Однако у меня возникла проблема с принятием того, что говорит MSDN, и включением его в мой код. Я, вероятно, делаю очень новичок ошибку. Тем не менее, после нескольких дней поиска в интернете, я все еще не нашел решение.

Я пытаюсь просто открыть трафарет с помощью 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;
        }
    }

1 Ответ

0 голосов
/ 20 января 2009

Вы пытаетесь получить статический доступ к элементу управления чертежом, когда его необходимо создать для использования. Вот прохождение , которое должно помочь.

...