2010-05-19 5 views
2

Dites que je voulais personnaliser un OpenFileDialog et modifier, par exemple, la façon dont le filtre pour les extensions de fichiers fonctionne, comme dans le cas de la question this. Après avoir fait remarquer à l'auteur de ladite question que le OpenFileDialog n'est pas héritable, je suis arrivé un commentaire à ce qui suit:Comment personnaliser un OpenFileDialog en utilisant des types imbriqués?

Même si le OpenFileDialog est scellé (non héritable), vous pouvez l'utiliser comme un type imbriqué . Par exemple, en utilisant une propriété qui obtiendra le NativeDialog. Ensuite, vous écrivez votre méthode en utilisant toujours la propriété NativeDialog et vous avez terminé.

Ma question est, quelqu'un peut-il me fournir un exemple de code sur la façon dont je procéderais à faire quelque chose comme ça? Je suis un peu novice en ce qui concerne le concept des types imbriqués, donc j'ai du mal à comprendre cela par moi-même, et j'ai cherché sur le web et je n'ai rien trouvé de concret à ce sujet.

Merci!

Répondre

2

Le type imbriqué est juste une autre façon de dire wrapper class (je suppose). Donc, vous créez une nouvelle classe qui a une classe membre privée de OpenFileDialog. Ensuite, vous créez tous les membres publics dont vous avez besoin.

Donc, pour OpenFileDialog vous créez une classe comme ceci:

public class CustDialog 
{ 
    private OpenFileDialog _dialog; 

    public CustDialog() 
    { 
     //instantiate custom OpenFileDialog here 
    } 

    public DialogResult ShowDialog() 
    { 
     return _dialog.ShowDialog(); 
    } 
} 

Vous pouvez même prendre un peu plus loin et ont la Hériter de classe wrapper de la classe CommonDialog. Cela vous permettra d'utiliser votre classe wrapper exactement comme une boîte de dialogue standard.

+0

Merci pour l'aide, mais je ne pense pas que ce soit la même chose, selon ce guide msdn: http://msdn.microsoft.com/en-us/library/ms173120(v=VS.80). Votre réponse m'aiderait à résoudre le problème, mais je me demande toujours si je pourrais le faire en utilisant des types imbriqués ... – vitorbal

+0

Un type imbriqué ne vous permettra toujours pas d'hériter d'une classe scellée. Je ne suis pas sûr de ce que la personne voulait dire quand on vous l'a dit, mais une enveloppe de classe fera ce dont vous avez besoin. –

+0

Je suis d'accord, merci pour l'aide! – vitorbal

Questions connexes