2010-08-09 25 views
0

J'ai une boîte de dialogue dans vb6 qui change les valeurs affichées dans sa boîte de dialogue parente.Contrôles d'accès du dialogue parent dans VB6

Le x1 est affiché dans le texte txt_c1 dans la boîte de dialogue parente et possède également une fonction txt_1validate pour la zone de texte. Maintenant, je veux changer la valeur de txt_c1 txtbox de la boîte de dialogue enfant, puis appeler sa fonction de validation. Mais le problème est que txt_c1 n'est pas disponible dans la boîte de dialogue enfant.

S'il vous plaît noter que je travaille dans VB6 dans le MS VB 6.0 IDE

+0

S'il vous plaît pouvez-vous envoyer un code pour illustrer ce que vous voulez dire? –

+0

main.frm est mon dialogue principal il contient une zone de texte txc1 et un bouton sur le formulaire principal ouvre Form1.frm. maintenant quand l'utilisateur appuie sur un bouton sur Form1 la valeur de txc1 textbox devrait changer et sa méthode de validation devrait être appelée mais le txc1 n'est pas disponible dans from1.frm – PUG

+0

D'accord - mais je pense que nous devons voir le code réel. Par exemple, le bloc de code qui appelle le formulaire enfant et l'événement validate. Sans voir comment vous invoquez le formulaire, il n'est pas facile de voir pourquoi vous ne pouvez pas accéder au parent. –

Répondre

1

Forms ne sont que des classes et peuvent donc être instanciées explictly (et vous trouverez probablement votre vie plus facile si vous faites plutôt que d'utiliser l'instanciation automatique en VB6) et des références aux formulaires peuvent être attribuées.

Vous pouvez résoudre votre problème en créant une propriété publique sur votre boîte de dialogue enfant (Form1.frm) de type Form que vous définissez sur l'instance de la boîte de dialogue parent, vous donnant ainsi accès aux commandes andd méthodes du parent à partir du enfant.

Mon VB6 est un peu rouillé (et je n'ai pas une instance installée disponible) donc cela ne va pas être réelle, code correct - mais quelque chose le long des lignes de ce qui suit devrait fonctionner

Dans le code qui appelle l'enfant:

Form childDialog = new Form1 
childDialog.Parent = this 
childDialog.ShowModal 

Puis, dans la boîte de dialogue de l'enfant:

Parent.txt_c1 = newValue 
if not Parent.Validate then 
... 
end if 
+1

Pas un mauvais essai à VB6, je suppose que vous avez déménagé en C#? Je pense que vous voulez dire quelque chose comme 'Dim childDialog As Form1: Définir childDialog = Nouveau Form1: Définir childDialog.Parent = Me: childDialog.Parent.Show vbModal' et puis' Parent.txt_c1.Text = newValue: Si Non Parent.Validate Then' Je devinerais aussi que jaminator peut avoir besoin de faire 'txt_1validate' Public – MarkJ

+0

Murph merci pour votre réponse, mon nom de dialogues chilad est attachmentsFrm et quand j'essaye de faire instance de formulaire = New attachmentsFrm il donne erreur – PUG

+0

yup ses remerciements de travail Mark et Murph – PUG