2010-10-07 26 views
1

Je développe une application mobile en C#. J'utilise la fonctionnalité de lancement du clavier pour lancer le clavier sur l'appareil mobile lorsque l'une des zones de texte est ciblée. J'utilise le code suivant.Comment redimensionner dynamiquement le formulaire Windows dans une application mobile?

private void inputPanel1_EnabledChanged(object sender, EventArgs e) 
     { 
      InputEnabled(); 
     } 

     private void InputEnabled() 
     { 
      int y; 

      if (inputPanel1.Enabled) 
       // SIP visible - position label just above the area covered by the input panel 
       y = Height - inputPanel1.Bounds.Height; 
      else 
       // SIP not visible - position label just above bottom of form 
       y = Height; 

      // Calculate the position of the top of the label 
      //y = y - mainPanel.Height; 
      //this.Dock = DockStyle.Top; 
      //mainPanel.Location = new Point(0, y); 
      this.Size = new Size(this.Size.Width, y); 
      this.AutoScroll = true; 

      //this.AutoScrollPosition = new Point(this.AutoScrollPosition.X, descriptionTextBox.Location.Y); 
     } 

Dans le code ci-dessus, j'essaie de modifier dynamiquement la hauteur de la fenêtre. J'ai ajouté un point d'arrêt dans ma demande. Dans l'énoncé suivant

this.Size = new Size(this.Size.Width, y); 

Je peux voir que la valeur de y est modifiée à 180 dans le côté droit. Mais dans le côté gauche, la valeur de ce this.Size reste inchangé. Je ne sais absolument pas pourquoi cela arrive. Pouvez-vous s'il vous plaît me dire quelque chose ne va pas dans mon code ou pouvez-vous me fournir la solution de sorte que la valeur de la hauteur dans la déclaration this.size sur le côté gauche soit modifiée?

Répondre

2

Modifier la taille du formulaire dans une application WinMobile peut être difficile et je préfère l'éviter si ce n'est absolument nécessaire.

Dans ce cas, au lieu de redimensionner le formulaire, vous pouvez placer vos contrôles dans un panneau et redimensionner le panneau. Vous pouvez également utiliser l'approche pour l'utilisation d'un panneau d'entrée souple ici: http://www.christec.co.nz/blog/archives/42

Redimensionner le panneau accosté au bas du formulaire pour être la même hauteur que le SIP. Cela déplace d'autres contrôles également ancrés au bas du formulaire pour être au-dessus de la zone couverte par le SIP .

+0

Et un autre lien sur le sujet: http://stackoverflow.com/questions/2266518/how-to-automatically-resize-a-windows-mobile-application-when-the-keyboard-appear – Yakimych