Ui Klassen in C#

  • Hallo Zusammen,


    wie kann ich mit C# die UI Klassen nutzen??


    mit VB würde das so gemacht :


    Dim uiWorkspace as Object
    Set uiWorkspace = CreateObject(“Notes.NotesUIWorkspace”)



    kann mir jemand sagen, wie ich das in C# umsetze??


    Danke im Voraraus...


    Pascal

  • Danke,


    folgendes Ergebnis habe ich bekommen:


    object uiWorkspace = null;


    System.Type uiWorkspaceType = System.Type.GetTypeFromProgID("Notes.NotesUIWorkspace");
    uiWorkspace = System.Activator.CreateInstance(uiWorkspaceType);


    uiWorkspaceType.InvokeMember("EditDocument", System.Reflection.BindingFlags.InvokeMethod, null, uiWorkspace, new object[] { true, nDoc, false, System.Type.Missing, false, true });


    Leider führt das nur zum Absturz... und zwar beim Aufruf der Methode EditDocument


    Hat dazu jemand eine Idee?
    Oder besser noch:


    Ist mir eine "normale" notesmethode zum Öffnen von Dokumenten entgangen??


    Danke noch mal

  • ich habe die domino.tlb eingebunden und mein ndoc ist auch ein Notesdocument...


    es funktioniert auch alles super. Ich kann speichern, Felder auslesen und was man sonst noch so will... außer dem Editieren :(

  • Ja, alles bestens!


    nDoc.ComputeWithForm(true, false);
    nDoc.Save(true, false, true);

    Das klappt alles noch, und dann gehts los...



    System.Type uiWorkspaceType = System.Type.GetTypeFromProgID("Notes.NotesUIWorkspace");


    ist das denn richtig?


    Die ProgID von Notes?? Instanzieiren tut man die dinger NotesDocuments etc. eigentlich über Domino.NotesDocument oder Domino.NotesSession.

  • Nein das tut man nicht.


    Entweder über Lotus.xxx für Backend Klassen oder Notes.xxx für Frontend Klassen.


    Und vor allem darf man diese Dinge auch nicht mischen, d.h. ein Dokument daß du über eine Lotus.xxx Instanz erstellt hast kannst du nicht über einen Notes.xxx Aufruf nutzen.


    Liefer doch mal das komplette Script dann sieht man den Fehler sicher sofort

  • Hier die absolut relevanten stellen:


    Eingebunden habe ich die domino.tlb.


    using Domino;



    private Domino.NotesDatabase db;
    private Domino.NotesSession session;


    session = new Domino.NotesSession();
    session.Initialize(""); //Hier kommt dann passwordabfrage, wenn notes geschlossen ist


    db = session.GetDatabase("", dbdir, false);


    Domino.NotesDocument nDoc;
    Domino.NotesRichTextItem email;
    Domino.NotesRichTextStyle style;



    nDoc = db.CreateDocument();


    Jetzt mache ich noch was mit den Richtextitem.


    nDoc.ComputeWithForm(true, false);
    nDoc.Save(true, false, true);


    und jetzt möchte ich das Dokument öffnen.

  • koehlerbv


    UI Klassen über OLE gehen sehr wohl. Hab ich auch schon öfters gemacht


    pallinio


    Wie ich schon im vorigen Post sagte, darf man diese nicht mischen, d.h. du musst dir das Dokument dann auch per UI Klassen holen um es dann öffnen zu können. Oder du erstellst es gleich über diese