Question

Je rencontre un problème en essayant d'ancrer une zone de texte à un formulaire sur les 4 côtés. J'ai ajouté une zone de texte à un formulaire et défini la propriété Multiline sur True et la propriété Anchor sur Gauche, Droite, Haut et Bas afin que la zone de texte s'agrandisse et se rétrécisse avec le formulaire au moment de l'exécution. J'ai aussi quelques autres contrôles en haut et en bas de la zone de texte.

L’ancrage fonctionne correctement dans Visual Studio 2005 (c’est-à-dire que je peux redimensionner le formulaire et que les contrôles se développent et se réduisent comme prévu), mais lorsque je lance le projet, le bas de la zone de texte est étendu jusqu'au bas du formulaire, derrière les autres contrôles qui apparaissent normalement en dessous. Ce problème se produit lors du chargement du formulaire, avant toute tentative de redimensionnement. L'ancrage de la zone de texte est correct pour les côtés supérieur, gauche et droit; seul le fond fonctionne mal.

Quelqu'un en at-il entendu parler et, dans l'affirmative, avez-vous pu trouver une solution?

Merci!

MISE À JOUR:

Voici une partie du code du concepteur, conformément à la demande de Greg D (je n'inclue que les éléments relatifs à la zone de texte elle-même, et non aux autres contrôles):

Friend WithEvents txtRecommendationText1 As System.Windows.Forms.TextBox

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
    Me.txtRecommendationText1 = New System.Windows.Forms.TextBox

    ' ...snip...

    'txtRecommendationText1

    Me.txtRecommendationText1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                Or System.Windows.Forms.AnchorStyles.Left) _
                Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
    Me.txtRecommendationText1.Location = New System.Drawing.Point(4, 127)
    Me.txtRecommendationText1.Multiline = True
    Me.txtRecommendationText1.Name = "txtRecommendationText1"
    Me.txtRecommendationText1.Size = New System.Drawing.Size(223, 149)
    Me.txtRecommendationText1.TabIndex = 10
End Sub

UNE AUTRE MISE À JOUR:

La zone de texte sur laquelle j'avais posté à l'origine n'était pas héritée d'un formulaire de classe de base (bien qu'elle ait été ajoutée à une classe de contrôle utilisateur personnalisée; j'aurais probablement dû le mentionner plus tôt), mais j'ai récemment rencontré le même problème sur un ensemble totalement indépendant. des contrôles qui ont été hérités d'une forme de classe de base. Il est facile de reprocher à ces problèmes d’éventuels bogues dans le framework .NET, mais cela commence vraiment à ressembler à cela.

Était-ce utile?

La solution 3

La zone de texte sur laquelle j'avais posté à l'origine n'était pas héritée d'un formulaire de classe de base (bien qu'elle ait été ajoutée à une classe de contrôle utilisateur personnalisée; j'aurais probablement dû le mentionner plus tôt), mais j'ai récemment rencontré le même problème sur un ensemble totalement indépendant. des contrôles qui ont été hérités d'une forme de classe de base. Il est facile de reprocher à ces problèmes d’éventuels bogues dans le framework .NET, mais cela commence vraiment à ressembler à cela.

Autres conseils

Votre formulaire est-il localisé? Recherchez dans les fichiers de ressources une entrée avec Textbox.Size , supprimez-le et réinitialisez la taille.
Votre Form est-il hérité et la Textbox est-elle sur la base? Essayez de définir le modificateur d'accès de Textbox sur Protected ou Public.
Avez-vous mis en œuvre une logique de redimensionnement personnalisée? Éteignez-le et voyez si le problème persiste.
Avez-vous entré un Textbox.MinimumSize / MaximumSize ? Supprimer ou modifier la valeur.

Cela pourrait aussi être une combinaison de ces choses ...

Le formulaire revient-il à la mise en page attendue lorsque vous le redimensionnez après son initialisation bizarre? De même, avez-vous défini une propriété Height ou MinimumHeight / MaximumHeight pour la zone de texte?

Si possible, quelques extraits du code du concepteur peuvent être utiles. :)

L’une des possibilités que j’ai rencontrée dans le passé est le DPI. Si vous exécutez / testez votre code sur une machine avec un paramètre DPI différent de celui sur lequel vous développez, vous risquez d'observer des choses étranges.

La fonctionnalité d'ancrage établit essentiellement une distance fixe entre le bord d'un contrôle et le bord du parent du contrôle. Votre zone de texte est-elle intégrée à un autre contrôle (un panneau, par exemple) dont les ancres ne sont pas correctement définies? En cliquant avec le bouton droit de la souris sur la zone de texte du concepteur, un menu vous permettant de sélectionner les contrôles situés en dessous de celui-ci devrait également apparaître.

Votre programme inclut-il une logique de redimensionnement personnalisée ou modifie-t-il par programme la taille de la zone de texte en dehors du code généré par le concepteur? Cela pourrait également entraîner un comportement étrange. J'ai pris en charge la maintenance de plusieurs logiciels de mon entreprise, où les développeurs d'origine ont passé beaucoup de temps à mettre en œuvre une logique de redimensionnement (boguée) que je devais arrêter pour pouvoir laisser le code généré par le concepteur se charger de la tâche. travaille pour moi.

Cela est très probablement dû à la propriété 'AutoScaleMode' définie dans InitializeComponent (). Essayez de le régler sur 'Aucun' et voyez si cela résout le problème. J'ai eu ces problèmes plusieurs fois maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top