2010-11-08 13 views
6

que tiene un panel con AutoScroll conjunto de true. En él, programáticamente agrego controles ComboBox. Si agrego suficientes controles para exceder el tamaño visible del panel, aparece una barra de desplazamiento (hasta ahora todo bien). Sin embargo, si abro uno de los cuadros combinados cerca de la parte inferior del área visible, la lista combinada no se muestra correctamente y el área desplazable parece expandirse. Esto hace que todos los controles sean "tirados" hacia la parte inferior del panel con un nuevo espacio en blanco en la parte superior. Si continúo tocando en el menú desplegable en la parte inferior del panel, el área desplazable continuará expandiéndose indefinidamente. Estoy anclando los controles a la izquierda, derecha y arriba, así que no creo que el anclaje esté involucrado. ¿Hay algo obvio que podría estar causando esto?cuadro combinado en un panel desplazable causando problemas

Actualización: Parece que el problema radica en el anclaje de los controles a la derecha. Si no anclaré a la derecha, entonces no obtendré el comportamiento extraño. Sin embargo, sin un anclaje correcto, el control queda cortado por la barra de desplazamiento.

Aquí es un caso de prueba simplificada he construido que muestra el problema:

public Form1() 
    { 
     InitializeComponent(); 

     Panel panel = new Panel(); 
     panel.Size = new Size(80, 200); 
     panel.AutoScroll = true; 

     for (int i = 0; i < 10; ++i) 
     { 
      ComboBox cb = new ComboBox(); 
      cb.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; 
      cb.Items.Add("Option 1"); 
      cb.Items.Add("Option 2"); 
      cb.Items.Add("Option 3"); 
      cb.Items.Add("Option 4"); 
      cb.Location = new Point(0, i * 24); 
      panel.Controls.Add(cb); 
     } 

     Controls.Add(panel); 
    } 

Si se desplaza hacia la parte inferior del panel y pulsar en los cuadros combinados en la parte inferior que notará el comportamiento extraño.

+0

¿qué plataforma? Silverlight? wpf? ¿destello? ¿formas de triunfo? ¿áspid? (etc.) –

+0

Winforms, disculpa por no haber incluido esa etiqueta antes. – Dennis

+0

Probé tu código de prueba y no vi nada parecido a lo que describes. ¿Qué versión de Visual Studio estás usando? – stone

Respuesta

0

Esto parece ser un problema específico de los dispositivos que está utilizando. No puedo reproducir este comportamiento en absoluto. ¿Has intentado configurar la propiedad Dock del Panel? ¿Qué hay de las otras propiedades que afectan el comportamiento de desplazamiento (AutoScrollMargin, AutoScrollMinSize, AutoScrollPosition)? También jugaría con el tamaño del panel, y tal vez use la clase System.Windows.Forms.Screen para determinarlo automáticamente en función del dispositivo.

+0

Este comportamiento definitivamente parece específico del dispositivo. Lo he intentado en algunos dispositivos y no he podido reproducirlo en todos. Me pondré en contacto con el fabricante para ver si hay algún motivo por el cual esto esté sucediendo en su dispositivo y no en otros. Lo siento por la respuesta tardía... – Dennis

0

intente configurar el desplazamiento automático en false y tratar de usar las barras de desplazamiento normalmente.

Alternativamente, si no puede encontrar otra solución razonable, sería posible manejar los eventos de desplazamiento/cambio de tamaño y cambiar el tamaño/mover manualmente sus controles (Exactamente lo que hace el ancla) Si bien esto sería bastante molesto, se desharía de cualquier problema que pueda tener.

0

yo también era capaz de probar contra un dispositivo de Windows CE, en Visual Studio 2005, .NET CF 2.0 como también nosotros tenemos cosas usando los equipos más viejos también. No tengo problemas. ¿Podría ser un problema de la versión de Windows CE en el dispositivo que está causando el problema? ¿Qué dispositivo se está utilizando (es decir: ¿Fabricante?). Incluso creé un nuevo proyecto de formulario único, por lo que no hay otras cosas que puedan alterar o influir en su código.

¿Funciona el comportamiento durante la depuración, en tiempo de ejecución, o ambos?

Cuestiones relacionadas