Sauvegarder dans le presse papier après édition.

Septimanien34 Messages postés 3 Date d'inscription vendredi 25 août 2023 Statut Membre Dernière intervention 26 août 2023 - Modifié le 25 août 2023 à 22:30
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 - 26 août 2023 à 20:39

Bonjour,
Je cherche a sauver dans le presse papier un texte de ce genre:

{
    "level": 0,
    "levelStartTime": 22.0,
    "day": 0,
    "longitude": 3.1015710830688478,
    "latitude": 56.455345153808597,
    "botsEnabled": false,
etc etc....



J'y arrive en le tapant a partir de mon programme et en modifiant à la main les lignes et en doublant les " comme ceci :
 

 My.Computer.Clipboard.SetText("{
    ""level"": 0,
    ""levelStartTime"": 22.0,
    ""day"": 360,
    ""longitude"": 3.1015710830688478,
    ""latitude"": 56.455345153808597,
    "botsEnabled": false,

etc etc



Mais je voudrais faire un éditeur de ce texte, comment sauver dans le presse papier une fois les datas changés ?
Je suppose que  My.Computer.Clipboard.SetText n'est plus la bonne solution .

Pouvez-vous m'éclairer ?
Merci d'avance.

3 réponses

Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
Modifié le 26 août 2023 à 07:58

Rebonjour 

si ton but est d'écrire à la main un fichier json, notepad sait très bien faire ça.

Encore mieux, notepad++ si tu veux de la coloration syntaxique et de l'écriture multigne.

Peux tu expliquer comment tu comptes "changer" ton texte ? Parce que, c'est à partir de là qu'on va pouvoir déterminer comment l'envoyer dans le presse papier.

Par exemple si tu veux une liste (déroulante ou non) ou une grille avec tes catégories à choisir pour renseigner leur valeurs, ce qui aurait un intérêt par rapport aux éditeurs cités plus haut, ce ne sera pas juste je copie tout le texte de la textbox dans le presse papier 


0
Septimanien34 Messages postés 3 Date d'inscription vendredi 25 août 2023 Statut Membre Dernière intervention 26 août 2023
Modifié le 26 août 2023 à 14:49

Bonjour,

Oui c'est ca ! Les false et true avec des radiobutton, les datas comme  l'heure , les choix plus restreints comme le lieu (4 choix) en combobox la date qui est a partir du 1/9/1939 et qui est donnée dans le json en jour , avec DateDiff c'est impec, etc ... Les choix de données plus longues en Textbox ... Ca devrait ne pas poser de problème. C'est juste que je me retrouve avec des données , comment les réecrire en json ? Créer a chaque fois pour chaque réponse , la ligne en string et les rajouter à la suite ? Je vois bien que My.Computer.Clipboard.SetText ne fonctionnera pas dans ce cas. Comment ajouter un mix de texte et de données pour le sauver dans le presse papier ? 

https://drive.google.com/file/d/1rS4Zrc1AHbymwh5Cmh89dECsJEcMex0H/view?usp=sharing

0
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
Modifié le 26 août 2023 à 20:40

avec DateDiff c'est impec,

Sauf que... Pour reprendre la même analogie que sur ton message de présentation, DateDiff, c'est pas le bon animal.

Dans cet autre fil, je t'ai conseillé de lire la partie configuration de VS sur l'article destiné aux personnes venant de VB. Si tu appliques ce qui est écrit, DateDiff sera souligné comme référence inconnue et pour cause, c'est du VB6 (ou plus ancien, peu importe).

Le "problème" est que si tu ne te fais pas un peu violence à coder uniquement en .Net, le code est un peu boiteux et il peut arriver des bugs aléatoires qui sont très difficiles à corriger.

Mais surtout, tu ne profiteras pas des avancées technologiques.


Par exemple, il existe des outils qui écrivent directement des json. Il te suffirait donc de récupérer le texte généré pour le mettre dans le presse-papier.

Par exemple, celui par défaut de Visual Studio

https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/how-to?pivots=dotnet-6-0 dans cet exemple, le texte généré est affiché dans la console.

Mais comme tu peux le voir, il faut lui fournir une instance d'une classe. Il faut donc savoir coder une classe et à quoi ça correspond.

Quitte à avoir une classe, autant profiter du binding de données, qui te permet en quelques lignes et assez souvent sans trop te soucier des conversions de nombres, dates, durées (mais des TimeSpan, pas via DateDiff), boulean et j'en passe en texte pour les afficher sur l'interface utilisateur.

Et le binding fait aussi le chemin inverse, si l'utilisateur tape un texte qui ressemble à une date dans une textbox bindée sur une propriété de DateTime de ta classe, la data est convertie sans que tu aies à t'en soucier.

Bref, très pratique.


Mais pour utiliser tout ça comme il faut, et bien la première chose à faire est d'accepter d'oublier ce que tu connais et d'accepter que VB.Net est un nouveau langage à apprendre de A à Z.

C'est un investissement au départ, mais il devient vite rentable.


L'autre solution est de faire des bidouilles.

A toi de voir. Mais, sache que je suis peu enclin à m'embêter avec les bidouilles, mais j'aime prendre le temps qu'il faut pour essayer de transmettre ce que j'ai appris ici notamment, pour coder au mieux.


0
Rejoignez-nous