Announcement

Collapse
No announcement yet.

.Net-Newbie: Imagelist in mehreren Forms nutzen

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

  • .Net-Newbie: Imagelist in mehreren Forms nutzen

    Hallo,

    wie bitte kann ich eine Imagelist in mehreren Forms nutzen...?

    (VB oder C# oder D8)

    Danke,
    Werner

  • #2
    Hallo,

    Wenn der Inhalt der ImageList-Komponente über den Eigenschafts-Editor visuell konfiguriert werden soll, könnte man über die folgenden Zutaten das Ziel erreichen.
    <br><br>
    Schritt 1: Neues VB.NET Windows Forms-Projekt anlegen.
    <br><br>
    Schritt 2: Im Solution Explorer wird dem Projekt eine neue <i>Component</i>-Klasse hinzugefügt, so dass in VS.NET der Designer als Ablageplatz für Komponenten angezeigt wird.
    <br><br>
    Schritt 3: Aus der Toolbox wird die <i>ImageList</i>-Komponente auf den Component-Designer ablegen und über den Eigenschafts-Editor visuell konfigurieren (d.h. es wird mindestens eine Grafik in der ImageList abgelegtl).
    <br><br>
    Schritt 4: Im Solution Explorer wird dem Projekt ein neues <i>Modul</i> hinzugefügt. Module werden in VB.NET für Hilfsfunktionen verwendet, allerdings gibt es in VB.NET keinen prinzipellen Unterschied zwischen Module und Class, denn auch Module sind in Wirklichkeit ebenfalls Klassen. Der einzige Unterschied besteht darin, dass Module implizit nur aus <i>Shared Members</i> bestehen, d.h. auf die öffentlichen Elemente kann man aus jedem anderen Programmteil heraus sofort direkt zugreifen, ohne erst eine Instanz des Moduls erzeugen zu müssen. Aus diesem Grund arbeiten alle Programmteile immer mit der gleichen Module-Instanz und somit mit den gleichen Daten aus diesem Module.
    <br>
    In meinem Beispiel richte ich eine öffentliche Hilfsmethode ein, um im Modul eine Instanz der Component-Klasse zu erzeugen:
    <pre>
    Module Module1
    <br>
    Public aIL As Component1
    <br>
    Public Sub InitImageList()
    aIL = New Component1
    End Sub
    <br>
    End Module
    </pre>
    <br><br>
    Schritt 5: Dem Projekt wird über den Solution Explorer ein zweites Formular hinzugefügt.
    <br><br>
    Schritt 6: <i>Form1</i> erhält eine Toolbar mit einem Button, dieser wird erst zur Laufzeit mit dem Icon konfiguriert:
    <pre>
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Module1.InitImageList()
    ToolBar1.ImageList = Module1.aIL.ImageList1
    ToolBar1.Buttons(0).ImageIndex = 0
    End Sub
    <br>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim aFrm2 As New Form2
    aFrm2.ShowDialog()
    End Sub
    </pre>
    Schritt 7: Auch <i>Form2</i> ordnet die Grafik erst zur Laufzeit zu:
    <pre>
    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ToolBar1.ImageList = Module1.aIL.ImageList1
    ToolBar1.Buttons(0).ImageIndex = 0
    End Sub
    </pre&gt

    Comment


    • #3
      Hallo,

      erstmal Danke für die Antwort - ich konnte das nachvollziehen und es klappt.

      Allerdings ist´s nicht mein Traum, ich bin da wohl arg von Delphi/Win32 verwöhnt, denn DORT kann ich die in einer Image-List organisierten Bilder zur ENTWURFSZEIT auf welche Steuerelemente auch immer setzen.

      Das gleiche Problem existiert, wenn ich bspw. ein Editor-Repository von DevExpress einsetzen will. Es ist ja doch eigentlich gerade der Sinn hinter so einem Konzept (wie bei der Imagelist halt eigentlich ja auch), die organisierten Steuerelemente zur ENTWURFSZEIT auf mehreren Forms verwenden zu können.

      Wenn ich das richtig sehe, steht dem aber die sehr viel strengere Architektur von .Net entgegen - oder ???

      Danke + Gruß,
      Werne

      Comment

      Working...
      X