Announcement

Collapse
No announcement yet.

ITypeEditor verwenden oder ableiten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ITypeEditor verwenden oder ableiten

    Hallo,

    ich bin gerade dabei ein benutzerdefiniertes Steuerelement in einem Projekt Windows-Steuerelementbibliothek zu erstellen. Mit folgendem Attribut habe ich vor, für eine meiner selber geschriebenen Eigenschaften des Steuerelements einen OpenFileDialog eingefügt, damit ich die Dateinamen, die die Eigenschaft erwartet, nicht immer von Hand eingeben muss. Das ganze funktioniert auch soweit problemfrei .
    Wenn ich aber möchte, dass ich über den OpenFileDialog nur bestimmte Dateien wie z.B. Text-Dateien zur Auswahl bekomme, so war ich der Meinung richtig vorzugehen, wenn ich die Klasse „UITypeEditor“ vererbe, die Eigenschaften „EditValue“ und „GetEditStyle“ wie folgt überschreibe...

    <PRE>Imports System.Design
    Imports System.Drawing.Design
    Imports System.Windows.Forms.Design
    Imports System.ComponentModel

    Public Class UserControl1
    Inherits System.Windows.Forms.UserControl
    Dim UiType As New UITypeEditor()

    'Das zweite Argument "UITypeEditor" durch die von "UITypeEditor" abgeleitete Klasse ersetzt:
    &ltEditor(GetType(FileNameEditor), GetType(DateiNameUITypeEditor))&gt _
    Public Property DateiName() As String
    Get

    End Get
    Set(ByVal Value As String)

    End Set
    End Property

    'Weiterer Code............................

    #Region " Vom Windows Form Designer generierter Code "

    End Class

    'Anpassen des zu verwendenden Editors, damit nur TextDateien angez. werden:
    Class DateiNameUITypeEditor : Inherits UITypeEditor

    Public Overloads Overrides Function EditValue(ByVal context As ITypeDescriptorContext, _
    ByVal provider As IServiceProvider, _
    ByVal value As Object) _
    As Object
    Dim Result As String = value.ToString
    Dim dlg As OpenFileDialog = New OpenFileDialog()

    With dlg
    .Title = "Wählen Sie eine Textdatei"
    .Filter = "TextDatei|*.txt"
    .FileName = Result '-Könnte was fehlen!!
    End With

    If dlg.ShowDialog = DialogResult.OK Then
    Result = dlg.FileName
    End If

    Return Result '-Rückgabe eines Strings als Object!?!

    End Function

    Public Overloads Overrides Function GetEditStyle(ByVal context As ITypeDescriptorContext) _
    As UITypeEditorEditStyle
    Return UITypeEditorEditStyle.Modal

    End Function

    End Class</PRE>

    ... und dann im vor der Eigenschaft platzierten Attribut „EditorAttribute“ das Argument „UITypeEditor“ durch den Namen der hievon im selben Projekt abgeleiteten Klasse „DateiNameUITypeEditor“ zu ersetzen.

    Wenn ich so vorgehe, zeigt sich im Eigenschaftenfenster bei der Eigenschaft „DateiName“ allerdings keinerlei
    Editor mehr; was mache ich falsch bzw. was habe ich nicht beachtet?

    Vielen Dank für Eure Hilfe

    regards Lars
Working...
X