Announcement

Collapse
No announcement yet.

Mehrspaltige Combobox

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

  • Mehrspaltige Combobox

    Halloele

    Hat jemand eine "freie" Loesung wie man in c# mehrspaltige comboboxen erstellt? Bis jetzt habe ich nur c++ und kommerzielle Loesungen gefunden.

    Gruss Stefan

  • #2
    Hallo,

    ich glaube, es ist relativ einfach selber die Inhalte zu zeichnen. Das erfordert vielleicht anfangs etwas mehr Aufwand, aber er hält sich Grenzen, je nach dem, was mach gerade machen möchte.

    Mit <b>DrawMode</b> und dem Ergebnis <b>OnDrawItem</b> sollte das gehen. Hier erhält man über die EventArgs auf Zugriff auf BackColor, Bounds, Font, ForeColor, Graphics, Index und State. Denn nicht zu vergessen, müssen selektierte Einträge blau hinterlegt gezeichnet werden

    Comment


    • #3
      Hallo

      Hast Du auch einen Codeschnipsel / Beispiel, da ich im Moment noch nicht viel davon verstehe

      Comment


      • #4
        Hallo,

        ein konrektes Code-Beispiel habe ich leider nicht. Aber vielleicht hilft eine kurze Beschreibung:

        Als erstes muss die Eigenschaft <b>DrawMode</b> auf <b>OwnerDrawFixed</b> gestellt werden. Hierbei sind alle Einträge gleich hoch. Es gibt auch Comboxboxen mit variabler Höhe, doch muss man hierfür für jeden Eintrag die Höhe separat ermitteln.

        Das Event <b>OnDrawItem</b> wird dann immer dann aufgerufen, wenn es einen Eintrag zu zeichnen gibt. Die entsprechenden Objekte, wie Position oder Farbe, werden als Event-Parameter übergeben.

        Hier ein kleines Beispiel aus der Online-Doku:
        <pre>
        // Draw the background of the ListBox control for each item.
        e.DrawBackground();
        // Create a new Brush and initialize to a Black colored brush by default.
        Brush myBrush = Brushes.Black;
        .
        // Determine the color of the brush to draw each item based on the index of the item to draw.
        switch (e.Index) {
        case 0:
        myBrush = Brushes.Red;
        break;
        case 1:
        myBrush = Brushes.Orange;
        break;
        case 2:
        myBrush = Brushes.Purple;
        break;
        }
        .
        // Draw the current item text based on the current Font and the custom brush settings.
        e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush,e.Bounds,StringFormat.GenericDefault);
        // If the ListBox has focus, draw a focus rectangle around the selected item.
        e.DrawFocusRectangle();
        </pre&gt

        Comment

        Working...
        X