Vb.net – comment charger un formulaire sur un emplacement spécifique

la programmation


Je souhaite afficher un deuxième formulaire, qui affiche des données détaillées sur une certaine position, et le deuxième formulaire devrait cacher un contrôle sur le mainForm.

Le sous-formulaire se charge avec la taille correcte mais pas à la position attendue.

Des idées pour réaliser mon plan ?

Ce que j’ai essayé :

SubForm.Show()
SubForm.Size = Me.childView.Size
SubForm.Location = Me.childView.Location

Solution 1

Essayez de définir l’emplacement avant d’appeler Showet vérifiez que l’emplacement auquel vous le définissez est relatif à l’écran et non au formulaire existant. Si vous le souhaitez par rapport à un formulaire, vous devez ajouter les coordonnées supérieures gauches de ce formulaire à l’emplacement du contrôle enfant avant de le définir.

Mais sachez que cela ne fonctionnera probablement pas comme vous le souhaitez – Show n’est pas un appel modal, donc si l’utilisateur clique n’importe où sur votre formulaire d’origine, le nouveau perdra le focus et sera caché derrière le premier.
Très probablement, vous souhaitez utiliser un UserControl au lieu d’un formulaire, si vous souhaitez qu’il couvre les contrôles de votre formulaire existant.

Solution 2

Si vous recherchez un emplacement défini, utilisez : Énumération FormStartPosition (System.Windows.Forms) | Microsoft Docs[^]

L’une des énumérations est manuel[^] pour un emplacement ponctuel :

VB
Public Sub New()
    InitializeComponent()
    Me.StartPosition = FormStartPosition.Manual
    Me.Location = New Point(0, 0)
End Sub

Concernant la communication enfant-parent, vous pouvez utiliser plusieurs méthodes : rappel, délégués, propriétés.

コメント

タイトルとURLをコピーしました