none
Forms Controls Keyboard Events RRS feed

  • Frage

  • Hallo,

    ich bin mir nicht sicher ob die Kategorie stimmt, ich konnte allerdings keine bessere finden, da es sich zumindest um ein Problem mit Windows Forms Controls
    handelt, welche allerdings über OLE eingebunden werden.

    Ich arbeite an einem Control Container für ActiveX Controls. Nun tritt mit sämtlichen Forms Controls das Problem auf, dass diese
    keine Keyboard Events (keypress, keydown, keyup) and diesen weiterreichen, während Mouseevents erfolgreich verarbeitet werden können und
    während auch die Tastatureingaben in diesen Controls fehlerfrei funktionieren.
    Um ein wenig mehr in's Detail zu gehen, das Problem ist tatsächlich, dass die zugehörigen Dispatch-Aufrufe treten beim entsprechenden
    Interface des Containers nicht auf. Sie werden nicht gefiltert oder abgebrochen.

    Ich habe bereits versucht, COM Call Traces zu analysieren, um Fehler zu finden und untersucht, ob die Forms Controls ein spezielles Interface benötigen,
    um vollständig funktionieren zu können, bin aber nicht fündig geworden.

    Auch an der Keypreview Eigenschaft, über welche ich schon in verschiedenen Foren gelesen habe sollte is nicht liegen, da ich in einen Standard
    Forms Anwendung die Events verarbeiten konnte, obwohl diese Eigenschaft auf False gesetzt war.

    Es wäre schön, wenn jemand eine Tip hätte, woran das Nichtauftreten der Keyboard Events liegen könnte.

    Viele Grüße,
    Alex
    Freitag, 12. März 2010 08:39

Alle Antworten

  • Hallo Alex,

    Welche Entwicklersprache verwendest Du?

    Kannst Du einen Code zeigen?

    Danke und Grüße,

    Robert

    Freitag, 12. März 2010 09:01
    Moderator
  • Hallo Robert,

    wir haben in einem Smalltalk-Dialekt einen ActiveX Container implementiert. Die Implementierung ist pures COM und auf so einige Objekte verteilt. Daher ist es nicht so leicht, Code zu zeigen.

    Ich könnte aber ggf. Informationen zu unterstützten Interfaces, oder auch zu Methoden- und Property-Implementierungen liefern, falls das einen Hinweis liefern könnte, was genau nicht funktioniert.

    Ich werde mal versuchen, ein paar Informationen zusammenzustellen.

    Viele Grüße,
    Alex
    Dienstag, 16. März 2010 10:28
  • Hallo,

    wie versprochen habe ich in der Hoffnung, dass es vielleicht jemandem einen Hinweis auf die Ursache der nicht auftretenden Keyboard-Events gibt, eine Auflistung der von unserem Container unterstützten Interfaces erstellt.

    Control-Site:
    - IOleControlSite
    - IOleInPlaceSite
    - IOleClientSite
    - IDispatch
    - RefEvents
    - AdviceSink
    - PropertyNotifySink

    Control-Container:
    - IOleContainer
    - IOleInPlaceFrame
    - IOleInPlaceUIWindow

    Nun noch eine Liste von Interfaces, welches vom Forms Textbox Control "gewünscht" aber von uns derzeit nicht unterstützt werden.
    Ich habe die einzelnen Interfaces bereits auf Relevanz untersucht, bin aber nicht der Meinung, dass eines von dieses in irgendeinem Zusammenhang mit den Problemen stehen könnte.

    IOleDocumentSite - unsupported (only provides ActivateMe() method)
    IServiceProvider - unsupported
    IAdviseSinkEx - unsupported
    IOleInPlaceSiteWindowless - unsupported
    IOleInPlaceSiteEx - unsupported

    Sowohl Maus- als auch Keyboard-Events sollen über das RefEvents Interface (des ControlSite Objekts) verarbeitet werden.
    Wie schon in einem früheren Post gesagt - Maus- und Change-Events kommen an, Keyboard-Events nicht,
    obwohl für die Forms Textbox die Texteingabe problemlos funktioniert.

    Falls jemand eine Idee hat, woran das liegen könnte oder was ich ggf. noch untersuchen könnte, wäre ich sehr dankbar.

    Eins ist mir noch eingefallen:
    Wir unterstützen derzeit keine Message-Reflection, allerding gehe ich nciht davon aus, das dies erforderlich ist.

    Viele Grüße,
    Alex

    Dienstag, 16. März 2010 14:45