2013-09-24 2 views
0

J'essaie une petite application dans VB.Net 2010 et je suis confronté à un petit problème. Mon application a deux formes: une principale et une secondaire. Le formulaire principal a une barre de progression. De même que le formulaire secondaire. Lorsque l'application démarre, seul le formulaire principal est visible. Ici, je définis la valeur de la barre de progression à un certain pourcentage. Ensuite, j'ouvre le formulaire enfant, et je veux que la barre de progression reflète la même valeur que celle du formulaire principal. Comment puis-je atteindre cet objectif ? J'ai essayé de définir la valeur de la barre de progression sur le formulaire enfant en utilisant la valeur du formulaire principal, dans les méthodes load et montrées. Mais cela ne marche pas, la barre de progression du formulaire enfant arrive à zéro. Toutes les idées pour ce faire sont les bienvenus.VB.net 2010 - Obtenir les valeurs initiales de l'enfant à partir du formulaire principal

+0

Postez votre code pour les deux formulaires. –

Répondre

0

Cet exemple utilise une propriété pour vous montrer comment modifier le second Forms ProgressBar lorsque vous l'affichez et comment le mettre à jour à partir de Form1. Sans voir votre code je n'ai aucune idée de ce que vous faites mal, mais dans la plupart des questions que j'ai vues spécialement avec vb.net, le problème est que vous vous adressez à 2 instances différentes de votre seconde forme pour que les changements n'apparaissent jamais vous les attendez.

Form1

Public Class Form1 
    Dim frm2 As Form2 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     ProgressBar1.Value += 1 
     If Not IsNothing(frm2) Then 
      frm2.SetProgress = ProgressBar1.Value 
     End If 
    End Sub 

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
     frm2 = New Form2 
     frm2.SetProgress = ProgressBar1.Value 
     frm2.Show() 
    End Sub 
End Class 

Form2

Public Class Form2 
    Public Property SetProgress As Integer 
     Get 
      Return ProgressBar1.Value 
     End Get 
     Set(value As Integer) 
      ProgressBar1.Value = value 
     End Set 
    End Property 
End Class 
0

Comment avez-vous ouvert la deuxième forme et comment avez-vous la valeur de la forme principale barre de progression? vous avez besoin d'une méthode publique/propriété pour accéder aux contrôles de formulaire principal. par exemple, vous pouvez faire ce que vous avez besoin comme suit:

sous forme principale (MainForm):

private void btnOpenChildForm_Click(object sender, EventArgs e) 
    { 
     ChildForm f = new ChildForm(); 
     f.Show(this); 
    } 

    public ProgressBar GetMyProgressBar() { return progressBar1; } 

et deuxième forme (ChildForm):

private void ChildForm_Load(object sender, EventArgs e) 
    { 
     MainForm parent = this.Owner as MainForm; 
     progressBar1.Value = parent.GetMyProgressBar().Value; 
    } 

si vous voulez, Je peux vous envoyer une version VB.Net

Questions connexes