J'ai une classe qui devrait faire différentes choses avec un formulaire.Un cas pour l'interface?
Parce que ces « choses » sont spécifiques à la forme, je stocke la référence à la forme comme ceci:
Friend Class clsEdit
Private m_Form As frmMain
Et je passe à la classe comme ceci:
Public Sub New(ByRef uForm As frmMain)
m_Form = uForm
End Sub
maintenant quand ma classe doit faire ces « choses », je le fais comme ceci:
MyEditClass.DoThings()
en interne, il ressemble à ceci:
Public Sub DoThis()
m_Form.SetHookPaused(True)
m_Form.StopCommonTimers()
End Sub
Protected Overrides Sub Finalize()
m_Form.DoSomethingThatOnlyThisFormCanDo()
End Sub
Je voudrais maintenant pouvoir utiliser clsEdit sur une autre forme. Cette autre forme a aussi les fonctions "DoThings" et "DoSomethingThatOnlyThisFormCanDo".
Cependant, quand je change la déclaration de m_Form à cette
Private m_Form As Form
... Je ne peux plus:
m_Form.DoThings()
... parce que "DoThings" est pas un propriété/fonction de "formulaire".
Et quand je change à ceci:
Private m_Form As frmOther
... Je ne peux pas faire plus:
Public Sub New(ByRef uForm As frmMain)
m_Form = uForm
End Sub
Quelqu'un peut-il me dire comment je pourrais le faire?
Un formulaire est déjà une classe. Vous pouvez simplement ajouter des méthodes au formulaire plutôt que de le ranger dans une autre classe. Vous ne savez pas comment Interfaces joue dans votre message. – Plutonix
Oui, si vous avez deux formulaires différents avec les mêmes méthodes et fonctions, créez une interface et utilisez-la à la place. – LarsTech
Voulez-vous me donner un kickstart sur une interface pour ce cas? – tmighty