11
votes

Personnaliser OpenFileDialog

Je travaille sur l'application WinForms en C #. Ce que je veux réaliser, c'est d'obtenir un fichier de l'utilisateur pour lequel j'utilise le code suivant: xxx

maintenant, tout fonctionne bien, mais je veux mettre 3 boutons radio dans la même boîte de dialogue Boîte, ce qui signifie que je voudrais maintenant obtenir deux choses à partir de cette boîte de dialogue xxx

Comment puis-je atteindre cela?


1 commentaires

+1 pour la question et la réponse (s). Au moins maintenant, je me rends compte que je ne veux pas bouger beaucoup de fromage. Je trouverai une autre façon qui ne casse pas aux attentes des utilisateurs de ce qui est normal dans Windows.


3 Réponses :


11
votes

Oui, cela est possible, je l'ai fait le même genre de personnalisation avec SaveFileDialog avec succès et il est assez intéressant.

Suivez les liens suivants:

http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx

http://www.codeproject.com/KB/cs/getsavefilename.aspx

http://www.codeproject.com/KB/dialog/CustomizeFileDialog.aspx

Aussi mes propres questions aussi vous aider à:

Modifier arrangement par défaut des boutons Enregistrer et Annuler dans SaveFileDialog

Comment arrêter overwriteprompt lors de la création SaveFileDialog en utilisant GetSaveFileName

Vous devez utiliser le WinAPI pour cela et vous devez écrire la méthode ShowDialog dans votre propre appeler GetOpenFileName fenêtres fonctionnent à l'intérieur , au lieu d'appeler de .net OpenFileDialog . GetOpenFileName va créer les fenêtres OpenFileDialog . (Reportez-vous à http://msdn.microsoft .com / fr-fr / bibliothèque / ms646927% = 28V vs.85% 29.aspx ). Cette collaboration avec la rédaction de la procédure de HookProc et la capture des événements tels que WM_INITDIALOG, CDN_INITDONE à l'intérieur vous aidera à faire ce que vous voulez.

Pour ajouter des boutons radio etc., vous devez appeler les fenêtres des fonctions telles que CreateWindowEx et SendMessage ....

Le 2ème lien a la direction exacte de la personnalisation ...

Demandez des précisions ...


1 commentaires

Quelle pitié que tous les liens de projets de code soient morts :(



3
votes

sur XP, vous devez utiliser la méthode de la procédure de crochet et l'API getopenfileName. Sur Vista et plus tard, cela donnera lieu à un dialogue de fichiers horrible avec utilitaire limité, par ex. Pas de recherche. Sur Vista, vous devez utiliser IfileDialog et pour personnaliser la boîte de dialogue dont vous avez besoin de l'interface IfileDialogCustomize. Étant donné que les nouveaux dialogues Vista sont exposés sous forme d'interfaces COM, elles sont assez faciles à consommer dans .NET.


0 commentaires

-9
votes

Essayez ce code:

private void Browse_Click(object sender, EventArgs e)
{
    var fdlg = new OpenFileDialog();
    fdlg.Title = "Open a file";
    fdlg.InitialDirectory = "c:/";
    fdlg.Filter = "all files(*.*)|*.*|all files(*.)|*.*";
    fdlg.FilterIndex = 2;
    fdlg.RestoreDirectory = true;
    if (fdlg.ShowDialog() == DialogResult.OK)
    {
        filetxt.Text = fdlg.FileName;
    }
}


0 commentaires