See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [C#] Besoin d'aide sur une app  (Read 2818 times)

0 Members and 1 Guest are viewing this topic.

Offline SolarLiner

  • Global Moderator
  • Legend
  • *****
  • Posts: 2769
  • Country: France fr
  • Karma: 55
  • a été remercié par Le Créateur
30 November 2015, 22:32:48
Salut,
Je suis en train de faire une application qui convertit une ressource TLE en scénario Orbiter - l'application est quasiment prête à être uploadée sous une première version, mais j'ai un bug curieux qui me ferme ma fenêtre d'édition du scénario.

Pour reproduire le bug:
Le bouton d'édition du scénario (pour le nom, la description, et la date) se trouve en haut à droite.


Pour pouvoir editer la date, il faut décocher 'Always use system time' / 'Toujours utiliser le temps système' afin d'activer le bouton.


Vous tombez alors sur la fenêtre d'édition de la date. Entrez une valeur au hasard, ce n'est pas important ici, puisque le bug survient quelque soit le MJD retourné.


Alors que vous cliquez sur OK, la fenêtre se ferme, mais la fenêtre d'édition du scénario le fait aussi, alors que ce n'est pas voulu. Et aucune modification n'est enregistrée, comme vous pouvez le voir, la case à cochée pour l'utilisation du temps système est toujours cochée.

Si quelqu'un pouvait m'aider, ce serai vachement bien...  :beer:
Le projet est ici: https://github.com/SolarLiner/TLEOrbiter
Les exécutables sont dans l'onglet "Releases", pour ceux qui veulent avoir l'app sans toucher au code (pour une raison ou pour une autre).

Merci d'avance ! ;)


Offline nerofox

  • Sr. Member
  • ****
  • Posts: 366
  • Country: France fr
  • Karma: 23
Reply #1 - 01 December 2015, 20:41:26
J'ai regardé ton code un peu, curieusement moi c'est quand je ferme la fenêtre de date (via la croix ou le bouton annuler) que les 2 fenêtres se ferment, en revanche le bouton ok chez moi n'effectue pas le bug que tu rencontre

J'ai en revanche commentée la ligne ci dessous sinon ton programme ne se lançais pas, fais attention avec le format d'affichage des nombres cela peut causer des problèmes ultérieur sur ton application :
Code: [Select]
Application.CurrentCulture.NumberFormat = System.Globalization.CultureInfo.InvariantCulture.NumberFormat;
Réessaie en commentant cette ligne et pour si ce changement de format tes nécessaires effectue le changement directement dans le panneau de config de Windows (pour tester)

Car la j'ai pas de problème  :music:


Offline SolarLiner

  • Global Moderator
  • Legend
  • *****
  • Posts: 2769
  • Country: France fr
  • Karma: 55
  • a été remercié par Le Créateur
Reply #2 - 01 December 2015, 21:39:35
La ligne donnée sert pour le parsing des données TLE, qui doivent utiliser un séparateur décimal à point et non à virgule - la ligne est utile car elle permet de donner un format strict pour toutes les cultures. Sans elle, j'ai des FormatException à chaque nombre que je veux lire.


Offline SolarLiner

  • Global Moderator
  • Legend
  • *****
  • Posts: 2769
  • Country: France fr
  • Karma: 55
  • a été remercié par Le Créateur
Reply #3 - 02 December 2015, 20:20:48
J'ai regardé ton code un peu, curieusement moi c'est quand je ferme la fenêtre de date (via la croix ou le bouton annuler) que les 2 fenêtres se ferment, en revanche le bouton ok chez moi n'effectue pas le bug que tu rencontre

J'ai en revanche commentée la ligne ci dessous sinon ton programme ne se lançais pas, fais attention avec le format d'affichage des nombres cela peut causer des problèmes ultérieur sur ton application :
Code: [Select]
Application.CurrentCulture.NumberFormat = System.Globalization.CultureInfo.InvariantCulture.NumberFormat;
Réessaie en commentant cette ligne et pour si ce changement de format tes nécessaires effectue le changement directement dans le panneau de config de Windows (pour tester)

Car la j'ai pas de problème  :music:

J'ai trouvé le problème!
En fait, lorsque je demander au formulaire de changement de date de se fermer, j'envoyais deux signaux: un en donnant une valeur à DialogResult qui alors activait Form.Close(); et une autre demande de fermeture en activant une seconde fois la demande de fermeture (avec this.Close();). Donc les deux messages passés à WINAPI, les deux formulaires se forment à la suite l'une de l'autre.

Une première version qui marche (j'espère) se trouve ici: http://www.orbithangar.com/searchid.php?ID=6850


Offline nerofox

  • Sr. Member
  • ****
  • Posts: 366
  • Country: France fr
  • Karma: 23
Reply #4 - 02 December 2015, 21:25:18
Quote
j'envoyais deux signaux: un en donnant une valeur à DialogResult

Intéressent j'avais un doute et en effet sa envoie un signal de fermeture effectivement  :wor:
tant mieux en tout cas que tu a résolu ton soucis