2011-08-04 12 views
5

Tengo un cuadro de lista que puede contener cadenas que son más anchas que él. Soy demasiado perezoso para escribir el código de cambio de tamaño en este momento, así que estoy mostrando información sobre herramientas que muestran todo el elemento si es demasiado grande para caber en el cuadro de lista.En un Listbox, ¿cómo puedo obtener el ancho del listbox menos el espacio que ocupa la barra de desplazamiento?

En este momento, estoy obteniendo el ancho usando la propiedad Width, y comparándolo con el resultado de MeasureText con la cadena y la fuente como argumentos.

Esto funciona bien la mayor parte del tiempo, pero no funciona en el caso donde el elemento se ajusta al listbox sin una barra de desplazamiento pero no se ajusta al cuadro de lista algo más delgado con la barra de desplazamiento.

Entonces, ¿cómo puedo saber:

  1. si un cuadro de lista está mostrando una barra de desplazamiento
  2. la anchura del cuadro de lista no incluye la barra de desplazamiento

supongo 2 se resolverían si la barra de desplazamiento ocupa el mismo ancho de píxel sin importar la versión de Windows o la configuración de la pantalla que se está ejecutando. ¿Alguien sabe si esto es cierto o no?

Respuesta

5

Puede usar ListBox.ClientRectangle.Width para obtener el espacio interior utilizado por el control.

Si ScrollBar está visible, el valor de ancho devuelto sería el ancho interior menos el ancho de la barra de desplazamiento, por lo que es seguro para usted medir en contra de ello.

Cuestiones relacionadas