vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
UITypeEditor abgeleitete Klasse per Interface verfügbar machen 
Autor: MartinWe
Datum: 18.04.09 16:36

Hallo liebe Experten,
ich hab da ein Problem ...

Eine von UITypeEditor abgeleitete Klasse wird per Interface nicht für ein Plug-In funktionsfähig zur Verfügung gestellt.

Szenario:
In der zentralen WinForm-Anwendung (.EXE) ist die Klasse SelectionEditor (abgeleitet von UITypeEditor) definiert. Sie muß in der Anwendung definiert werden, da sie auf allerlei Ressourcen zugreifen muß, die nicht nach außen zur Verfügung gestellt werden sollen.

Public Class SelectionEditor
    Inherits UITypeEditor
    Implements Core.ISelectionEditor
 
    Private EdService As IWindowsFormsEditorService
 
    Public Overloads Overrides Function EditValue(ByVal context As _
      ITypeDescriptorContext, _
        ByVal provider As IServiceProvider, ByVal value As Object) As Object _
        Implements Core.ISelectionEditor.EditValue
 
        If (Not context Is Nothing And Not context.Instance Is Nothing And Not _
          provider Is Nothing) Then
 
            EdService = CType(provider.GetService(GetType( _
              IWindowsFormsEditorService)), IWindowsFormsEditorService)
            If (Not EdService Is Nothing) Then
 
                Dim DlgObj As New SelectionEditorDlg, DlgRes As DialogResult
                DlgRes = DlgObj.ShowDialog()
 
            End If
        End If
 
        Return value
    End Function
 
    Public Overloads Overrides Function GetEditStyle(ByVal context As _
      ITypeDescriptorContext) _
        As UITypeEditorEditStyle Implements Core.ISelectionEditor.GetEditStyle
 
        If (Not context Is Nothing And _
        Not context.Instance Is Nothing) Then
            Return UITypeEditorEditStyle.Modal
        End If
        Return MyBase.GetEditStyle(context)
    End Function
 
    Public Overrides Function GetPaintValueSupported(ByVal context As _
      ITypeDescriptorContext) As Boolean _
        Implements Core.ISelectionEditor.GetPaintValueSupported
 
        Return False
 
    End Function
 
End Class
In der Interface-DLL (Core.dll) wird ein Interface auf SelectionEditor wie folgt zur Verfügung gestellt:

Public Interface ISelectionEditor
    Function EditValue(ByVal context As ITypeDescriptorContext, _
            ByVal provider As IServiceProvider, ByVal value As Object) As Object
    Function GetEditStyle(ByVal context As ITypeDescriptorContext) As _
      UITypeEditorEditStyle
    Function GetPaintValueSupported(ByVal context As ITypeDescriptorContext) As _
    Boolean
End Interface
In einer Plug-In-DLL wird eine Variable nun mit dem Editor-Attribut versehen:

        <Editor(GetType(Core.ISelectionEditor), GetType(UITypeEditor))> _
        Public Property XXXListCol() As BindingList(Of XXXListSpec)
Die .EXE und die Plug-In-DLL besitzen jeweils einen Verweis auf die Core-DLL (die Interface-Definition wird in der Anwendung auch aufgelöst).

Die aus der Plug-In-DLL entnommene, instantiierte Variable wird in der .EXE mittels PropertyGrid zur Anzeige gebracht. Und ... nichts geht, die PropertyGrid-Zeile ist ausgegraut (ReadOnly oder so).

Wenn ich in der Plug-In-DLL einen Verweis auf die .EXE direkt setze und das Editor-Attribut auf <Editor(GetType(SelectionEditor), ...> abändere funktioniert alles einwandfrei.

Fazit:
Bei der Interface-Deklaration fehlt irgendetwas. Weder der Konstruktor der SelectionEditor-Klasse noch eine andere Funktion werden aufgerufen wenn ich das Interface nutze.

Könntet Ihr mir bei diesem Poblem helfen? Vielen Dank im Voraus.

Gruß Martin
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
UITypeEditor abgeleitete Klasse per Interface verfügbar mach...1.056MartinWe18.04.09 16:36
Re: UITypeEditor abgeleitete Klasse per Interface verfügbar ...583ModeratorDaveS18.04.09 16:51
Re: UITypeEditor abgeleitete Klasse per Interface verfügbar ...623MartinWe18.04.09 17:23
Re: UITypeEditor abgeleitete Klasse per Interface verfügbar ...594ModeratorDaveS18.04.09 18:00
Re: UITypeEditor abgeleitete Klasse per Interface verfügbar ...639MartinWe18.04.09 20:05
Re: UITypeEditor abgeleitete Klasse per Interface verfügbar ...576ModeratorDaveS18.04.09 20:14
Re: UITypeEditor abgeleitete Klasse per Interface verfügbar ...530MartinWe18.04.09 20:36

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel