IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[OpenFileDialog] problem de filtre + JIT error message


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut [OpenFileDialog] problem de filtre + JIT error message
    Salut a tous, je suis nouveau au C# avec un background de C et python.
    J'essaye de faire un petit "wrapper" pour un programme progai.exe qui fonctionne en ligne de commande, comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prograi.exe -f fichier.ai1
    J'utilise donc System.Windows.Forms.OpenFileDialog pour avoir un super selecteur de fichier et puis le lance le programme avec Process.start()

    Deux problemes:

    1) Le filtre n'a pas l'air de fonctionner correctement, ou plutot, il fonctionne au debut mais si je change de type de fichier, passant de ai1 and ai2 (voir code), plus rien n'est affiche. Pareil si je selectionne *.*
    C'est comme si il manquait un rafraichissement une fois le changement fait...

    2) Si je change d'avis et clique sur "cancel", je recois une error du Just-Time-Debugger, assez enervant. Comment sans debarrasser pour que je puisse mettre mon propre message a la place?

    Merci d'avance

    David

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    using System;
    using System.IO;
    using System.Text; 
    using System.Windows.Forms;
    using System.Diagnostics;
     
    public class cMain{
     
    	static void Main(){
     
           string InitDir = ".";
    	string SelecFile;
    	string Arguments;
     
    	/*Gets file name from an OpenFile dialog*/
    	SelecFile = SelectTextFile(InitDir);
     
    	/*Creates the appropriate argument string*/
    	Arguments = String.Format("-f {0}",SelecFile);
     
    	/*Starts up the program*/			
    	Process p= new Process();
    	p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
    	p.StartInfo.CreateNoWindow = true;
    	p.StartInfo.WindowStyle = 0;
    	p.StartInfo.WorkingDirectory = ".";
    	p.StartInfo.FileName = "progai.exe";
    	p.StartInfo.Arguments = Arguments;
    	p.Start();
    	p.WaitForExit();
     
    	}
     
    	static public string SelectTextFile ( string initialDirectory )
    	{ 
     
    	   OpenFileDialog dialog = new OpenFileDialog(); 
    	   dialog.Filter = "ai1 files|*.ai1|ai2 files|*.ai2|All files (*.*)|*.*";
    	   dialog.FilterIndex = 1;
    	   dialog.InitialDirectory = initialDirectory; 
    	   dialog.Title = "Select a data file"; 
     
    	   return ( dialog.ShowDialog() == DialogResult.OK )
    	   ? dialog.FileName : null;
     
    	}
     
    }

  2. #2
    Membre éprouvé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Par défaut
    Bonjour,

    Pour le 1/ ce que tu as mis me semble correct

    Pour le 2/, je dirais que ton erreur peut venir de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arguments = String.Format("-f {0}",SelecFile);
    Car, si tu "Cancel" la sélection, ta méthode SelectTextFile() retourne une valeur null, qui doit générer une erreur via le string.Format. Essaie en retournant plutot string.Empty

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    hehe merci! Le String.Empty est en effet beaucoup mieux....

    Par contre je patoge toujours avec le filtre. En fait, j'ai remarque que si je change le type de fichier, alors le dossier courant apparait vide. il faut que je le quitte (en montant d'un niveau) et revenir dessus pour enfin avoir la mis-a-jour

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    S'il n'y a pas l'attribut STAThread avant la méthode static main, l'openfiledialog a des comportements bizarres. Notamment lorsque je clique sur le poste de travail.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [STAThread]
    static void Main(string[] args)
    A part ça, le filtre fonctionne très bien de mon côté.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    haha merci, ca a resolu le probleme !!! mais c'est quoi ce truc la [STAThread] ?

  6. #6
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    Je viens de trouver ca sur google:

    Over the top of your Main method, you may have noticed this funny decoration:

    [STAThread]
    static void Main() {

    Several people have asked, what is this and is it this actually necessary?

    When the STAThreadAttribute is applied, it changes the apartment state of the current thread to be single threaded. Without getting into a huge discussion about COM and threading, this attribute ensures the communication mechanism between the current thread and other threads that may want to talk to it via COM. When you're using Windows Forms, depending on the feature you're using, it may be using COM interop in order to communicate with operating system components. Good examples of this are the Clipboard and the File Dialogs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme d'affichage de mon message
    Par zorba49 dans le forum ASP
    Réponses: 2
    Dernier message: 14/03/2006, 11h10
  2. probleme de filtre de formulaire
    Par avantoux dans le forum Access
    Réponses: 1
    Dernier message: 19/01/2006, 15h02
  3. [castor][SOAP] Probleme avec la validation du message SOAP
    Par VinceFromBcn dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/09/2005, 14h12
  4. [REDHAT] Problème d'installation de linux message d'erreur: pci:00:03
    Par spilliaert quentin dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 07/08/2005, 13h51
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo