DropDownliste bei aufklappen neue breite



  • Hallo,

    ich schreibe euch, da ich ein kleines problem habe.
    Ich habe eine Dropdownlist dessen width nicht geaendert werden darf. Leider ist es zu schmall um einen bestimten Text anzuzeigen.
    Also soll beim aufklappen der DropDown die Breite des aufklappenden Bereiches so geaendert werden, das der Text komplett angezeigt werden kann.
    Ich habe jetzt schon einige zeit damit verbracht darauf eine antwort zu finden. Angeblich soll es gehen. Aber ich weiss immer noch nicht wie. Da ich irgendwie nicht die richtige Fkt finde. 😞
    Hat jemand eine Idee ??

    LG Helpless



  • HELPLESS schrieb:

    Also soll beim aufklappen der DropDown die Breite des aufklappenden Bereiches so geaendert werden, das der Text komplett angezeigt werden kann.

    Hm, soweit ich weiß gibt's da keine passende Funktion für. Ich sehe aber zwei andere Möglichkeiten: Du setzt deiner Combobox das Flag WS_HSCROLL und schickst der Combobox bei Bedarf LB_SETHORIZONTALEXTENT (http://msdn.microsoft.com/en-us/library/bb775828(VS.85).aspx.
    Ansonsten könntest du noch einen Tooltip anzeigen lassen, wenn die Maus über einem abgeschnittenen Item steht. Die Implementation für sowas müsste afaik z.B. bei CodeProject zu finden sein.

    edit: Evtl könntest du auch ein wenig rum-frickeln, was ich aber eigentlich immer nicht so schön finde. Jedenfalls klappt es vielleicht, die zur Combobox zugehörige Listbox zu holen (also das Handle) und die Größe dieser zu verändern. Vielleicht. 🙂

    edit #2: Ups, hatte gedacht ich wäre im WinAPI-Forum..



  • Über DropDownWidth kannst du die Breite des aufklapbarenden Bereichs einstellen.



  • danke

    das mit dem ToolTip finde ich eigentlich eine bessere Loesung, zumindest da dann das Auge nicht so ueberrascht ist wenn die ddl dann groesser ist wie sie eben noch war. Aber der will auch nicht so einfach angezeigt werden. Ich habe zwar einen ToolTip als moeglichkeit aber dieser wird nicht angezeigt bei mouse over.....

    Edit: wo ist die dropdownwidth ??? so ne fkt suche ich ja...



  • Das ist eine Eigenschaft der Klasse ComboBox. Du könntest diese z.B. im DropDown Event setzen.

    Das könnte in etwa so ablaufen:

    private void comboBox1_DropDown(object sender, EventArgs e)
    {
      float width, max = 0.0f;
      using ( Graphics g = Graphics.FromHwnd( comboBox1.Handle ) )
      {
        foreach ( string str in comboBox1.Items )
        {
          width = g.MeasureString( str, comboBox1.Font ).Width;
          if ( width > max )
            max = width;
        }
      }
    
      comboBox1.DropDownWidth = ( int )max;
    }
    


  • HELPLESS schrieb:

    Edit: wo ist die dropdownwidth ??? so ne fkt suche ich ja...

    Ist ne Eigenschaft der Combobox.
    Siehe für Tooltip-Krams übrigens auch hier oder hier.



  • geht das auch bei einer
    asp:dropdownlist ?? es ist ja keine 'normale' combobox...



  • Nein, da wirst du die Möglichkeit nicht haben. Einfach deshalb weil HTML diese Möglichkeit nicht bietet.



  • ja und es eine ddl von dieser sort.
    Koennte es ueber einer div Field mit mouseover event gehen mit dem tooltip ??



  • kleine frage nochmal:

    geht das wenigstens mit der breite veraendern beim aufklappen ???



  • Die Breite deines Dropdown Controls?



  • ja genau, die breite vom dropdown beim oeffnen abaendern.



  • Bei einer DropDownList (ASP.NET) geht das nicht. Das einzige was dir bleibt ist ein Control selbst zu schreiben oder Fremdkomponenten zu benutzen (ComponentArt, Telerik, etc.).



  • vielen Danke.
    Damit hilfst du mir wirklich sehr weiter.

    LG helpless



  • ich bins noch mal

    ist es vielleicht moeglich ein <span> um die asp:ddl zu legen und die mit einem mousover zu belgen die aehnlich dem tooltip ist ??


Anmelden zum Antworten