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

Windows Forms Discussion :

Erreur dans la saisie d'un DataGridViewComboBoxColumn


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut Erreur dans la saisie d'un DataGridViewComboBoxColumn
    Bonjour

    Si j'ai bien compris, le source suivant devrait permettre d'ouvrir le Combobox et de changer sa valeur.
    Or il provoque l'erreur Le thread actuel doit être en mode STA.
    J'ai raté quelque chose ?

    Merci de votre aide.

    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
    import clr
    clr.AddReference("System.Windows.Forms")
    from System.Windows.Forms import Application,Form,TabControl,TabPage,DataGridView,DataGridViewComboBoxColumn
     
    form = Form()
     
    liste = DataGridView()
     
    liste.Columns.Add(DataGridViewComboBoxColumn())
    liste.Columns[0].Items.AddRange(["","1h","1h30","2h"]) 
     
    liste.Rows.Add("1h")
    form.Controls.Add(liste)
     
    Application.Run(form)

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 027
    Par défaut
    C'est quoi comme langage ?
    On dirait un code python essayant d'utiliser du C#.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 027
    Par défaut
    A mon avis, ce sujet à plus sa place dans la section python.
    Pour activer le mode STA :
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    thread.SetApartmentState(ApartmentState.STA)

    Essaie de t'inspirer là dessus :
    https://github.com/pythonnet/pythonn...emo/wordpad.py

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut Solution du problème
    Voici donc le programme corrigé grâce à popo pour ceux qui auraient le même problème que moi.
    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
    import clr
    clr.AddReference("System.Windows.Forms")
    from System.Windows.Forms import Application,Form,DataGridView,DataGridViewComboBoxColumn
    from System.Threading import ApartmentState, Thread, ThreadStart
     
    form = Form()
     
    liste = DataGridView()
     
    liste.Columns.Add(DataGridViewComboBoxColumn())
    liste.Columns[0].Items.AddRange(["","1h","1h30","2h"]) 
    form.Controls.Add(liste)
     
    liste.Rows.Add("1h")
     
    def app_thread():
     
       Application.Run(form)
     
       form.Dispose()
     
     
    def main():
        thread = Thread(ThreadStart(app_thread))
        thread.SetApartmentState(ApartmentState.STA)
        thread.Start()
        thread.Join()
     
     
    if __name__ == '__main__':
        main()
    Merci à lui.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut Remerciements
    Merci popo pour ta réponse rapide.

    Effectivement c'est du python qui utilise le package clr pour utiliser le framework windows.

    Je suis désolé d'avoir posté dans la mauvaise rubrique car c'est au croisement de ASP.NET et de python, et j'ai choisi le premier pensant que le problème pouvait être commun à plusieurs langages.

    Je n'ai pas l'habitude de poster dans les forums car à 99,999% je résous mes problèmes avec les FAQ et les tutos, mais là tout le monde avait l'air de considérer comme évident l'utilisation de cet outil et si je faisais pareil, ça ne marchait pas.

    Je ne comprends pas pourquoi il faut utiliser tout ce bazar quand on utilise une cellule de ce type alors que je me suis toujours débrouillé sans avec tout le reste mais ce n'est pas grave.

    Un grand merci, je vais pouvoir continuer.

    J'ai mis la solution pour que ça serve à quelqu'un.

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 027
    Par défaut
    J'ai répondu au problème tel qu'il a été posé.
    Ravi que cela ait fonctionné.

    Mais je m'interroge sur le pourquoi avoir choisi de procéder ainsi sachant que C# propose nativement le Windows Form. Et que python bénéficie également de modules dédiés aux interfaces graphiques qui n'ont pas besoin de la CLR.

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

Discussions similaires

  1. Erreur If Then, saisie dans certaines cellules obligatoire
    Par AmbreM dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/09/2013, 17h30
  2. Erreur 1004 dans la saisie de données
    Par gds35 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/03/2009, 11h17
  3. Réponses: 2
    Dernier message: 19/09/2007, 15h51
  4. [Erreur dans la lib...]
    Par Gonath dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/12/2003, 10h02
  5. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 22h39

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