Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

J'ai démarrer un autoformation en c#, j'avance c'est déjà pas mal .mais

Je bloque sur un point particulier. L'appel d une commande depuis un bouton form

J'ais créer 3 types de commandes sur mon fichier "command.cs"

namespace chanzhachure2 
Entête commande:[CommandMethod("Chzbloc")]  public static void Chzbloc()

qui font appelle à une fonction qui lit un fichier xml ( fichier xml gérer par une form1.cs )

Entête fonction: public static List<string> Chzliste()

Et créer une commande "boite dialogue gestion du xml

       public void Chzoption()
       {
           Form1 tvf2 = new Form1();
           Autodesk.AutoCAD.ApplicationServices.Application.ShowModelessDialog(null, tvf2, false);
       }

Jusqu' a la tout fonction bien mais quand je place des boutons de lancement des commandes autocad plante

Form1:

namespace chanzhachure2
{
   public partial class Form3 : Form
   {............
      private void button7_Click(object sender, EventArgs e)
       {
           this.Close();
       //  Chzbloc() //résultat: inconnu
chanzhachure2.commande.Chzbloc();//résultat démarrage fonction et planter
           
       }
......

Posté(e)

Salut,

 

J'ai un peu du mal à comprendre tes explications (et les fautes d'orthographe n'aident pas...).

 

Dans tous les cas, une boite de dialogue non modale (modeless)* s'exécute dans le contexte de l'application et si tes commandes doivent s'exécuter dans le contexte du document (ce qui est probable), ça génèrera une erreur.

 

Puisque tu dis que tout fonctionne, j'imagine que tes commandes fonctionnent bien sans la boite de dialogue, quand on les appelle directement depuis la ligne de commande.

Si c'est bien le cas, le moyen le plus sûr et le plus simple est de laisser à AutoCAD le soin de basculer dans le contexte du document et de verrouiller celui-ci en appelant les commandes avec SendStringToExecute() depuis les gestionnaires d'évènement des boutons de la boite de dialogue.

 

private void button7_Click(object sender, EventArgs e)
{
   var doc = Application.DocumentManager.MdiActiveDocument;
   doc.SendStringToExecute("Chzbloc ", false, false, true);
}

 

 

* si l'utilisation d'une interface non modale est nécessaire, une palette peut être plus conviviale, sinon, l'utilisation d'une boite de dialogue modale, plus facile à gérer, s'impose.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

bonjour,(désolé pour les fautes)

je vais tester cela ,merci

mais peu tu me donner un peu plus d'explication sur

* si l'utilisation d'une interface non modale est nécessaire, une palette peut être plus conviviale, sinon, l'utilisation d'une boite de dialogue modale, plus facile à gérer, s'impose.

je n'est pas trouvée d'aide et d'exemple pour les boite de dialogue ou palette

(pardon si 4 exemples dont un de toi sur site anglais)

ou éventuellement comment chercher

Posté(e)

Salut,

 

Tout d'abord un petit rappel d'ordre général sur les différences entre l'affichage modal et non modal des interfaces utilisateur dans cet article.

 

Ensuite, je disais ça parce que dans AutoCAD, l'affichage non modal se fait sous forme de palette qui sont des boites de dialogue non modales, ancrables et repliables.

 

Pour ce qui est des exemples, je vais essayer, quand j'aurais le temps de faire un petit exemple simple avec les différentes formes.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

salut,

pour les exemples ne perds pas ton temps que pour moi

modale et non modale : en première lecture ce n'est pas clair dans mon esprit

donc je vais approfondir sa un peu plus dans le détail

merci

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité