Modalité fenetre ????

Modalité fenetre ???? - C#/.NET managed - Programmation

Marsh Posté le 21-06-2010 à 09:55:49    

Bonjour , je reviens vers vous pour un probleme au niveau de la modalité d'une fenetre  
ci joint le code  :  
 

Code :
  1. myNewRad = new RadForm();
  2. myNewRad.Size = new Size(430, 350);
  3. myNewRad.Text = "Choix du Backup";
  4. myNewRad.StartPosition = FormStartPosition.CenterScreen;
  5. myNewRad.ShowDialog();


 
myNewRad s'ouvre bien mais elle n'est pas modale :(  
Quelqu'un a une idée???

Reply

Marsh Posté le 21-06-2010 à 09:55:49   

Reply

Marsh Posté le 21-06-2010 à 09:58:24    

comment sais tu qu'elle n'est pas modale ? elle ne bloque pas sa fenêtre parente ?  
cette fenêtre est elle la fenêtre principale de ton appli ? auquel cas c'est normal qu'elle ne soit pas modale, vu qu'elle n'a pas de fenêtre parente


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2010 à 10:01:14    

Oui elle ne bloque pas sa fenetre parente !!!
 
Et non ce n'est pas la fenetre principale  !!!

Reply

Marsh Posté le 21-06-2010 à 10:05:33    

et appelles tu ShowDialog à partir de la fenêtre parente ? pour que ShowDialog fonctionne, il doit être appelé à partir de la fenêtre qui lui servira de parent


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2010 à 10:13:45    

ShowDialog() est dans une fonction qui est appelé ,  
 
Merci Harkonnen , j'ai trouvé la solution  

Code :
  1. myNewRad.ShowDialog(panel2);


 
Je l'appel mais en précisant sa fenetre pere ;)  
 
Merci beaucoup ;) Rapide et efficace ;)

Reply

Marsh Posté le 21-06-2010 à 10:16:36    

Ha c'est pas bon , quand je sors de myNewRad je ne peux plus toucher a la fenetre parente :(

Reply

Marsh Posté le 21-06-2010 à 10:21:39    

et  

Code :
  1. mynewRad.ShowDialog(this);


ça n'irait pas mieux ?
(à condition que ce code soit écrit dans la fenêtre parent)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2010 à 10:22:45    

Quand tu dis ecrit dans la fenetre tu entend quoi ? parce myNewRad est dans une fonction qui est appelé dans un certain cas en fait ...  
 
Comment je fais ?

Reply

Marsh Posté le 21-06-2010 à 10:27:39    

comment as tu structuré ton appli ? est elle constituée d'une fenêtre principale ? si c'est oui, alors j'imagine que le code réside dans une classe qui hérite de la classe Form.
donc, si la fonction qui appelle myNewRad.ShowDialog() fait partie de cette classe, alors myNewRad sera forcément affichée de façon modale. si tu appelles ShowDialog dans une classe qui n'est pas une Form, elle ne sera pas modale.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2010 à 10:33:36    

showDialog() est dans une fonction qui est dans le code de ma form.
 

Code :
  1. namespace DeployGeosys
  2. {
  3.     public partial class Deploy : Telerik.WinControls.UI.RadRibbonForm
  4.     {
  5.            [....]
  6.      //Le code de toute la Form
  7.  
  8.       private bool RollBack(ConfigDeploy.Operation op)
  9.             {
  10.                 try
  11.                 {
  12.                     myNewRad = new RadForm();
  13.                     myNewRad.Size = new Size(430, 350);
  14.                     myNewRad.Text = "Choix du Backup";                      myNewRad.StartPosition=FormStartPosition.CenterScreen;
  15. [...]
  16.                     myNewRad.TopLevel = true;
  17.                     myNewRad.ShowDialog(this);
  18. [...]


 
En gros voici comment c'est structuré  
 

Reply

Marsh Posté le 21-06-2010 à 10:33:36   

Reply

Marsh Posté le 21-06-2010 à 10:57:27    

ok...
tu dois mettre tout le code d'initialisation de ta form dans le constructeur de ta classe Deploy (donc les lignes de 12 à 17), et n'appeler dans ta fonction Rollback que la fonction ShowDialog.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2010 à 11:04:24    

Harkonnen a écrit :

ok...
tu dois mettre tout le code d'initialisation de ta form dans le constructeur de ta classe Deploy (donc les lignes de 12 à 17), et n'appeler dans ta fonction Rollback que la fonction ShowDialog.


 
Hum si je met dans mon constructeur de ma Form , cela ne change rien , et en plus sa m'empeche de rappeler cette fonction car il me dis que l'objet est supprimé ....  :s  

Reply

Marsh Posté le 21-06-2010 à 11:17:29    

ledim97 a écrit :


 
Hum si je met dans mon constructeur de ma Form , cela ne change rien , et en plus sa m'empeche de rappeler cette fonction car il me dis que l'objet est supprimé ....  :s  


je viens de faire un bête test : une form avec un bouton qui ouvre une fenêtre modale quand on clique dessus
 

Code :
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4.  
  5. namespace MyTest
  6. {
  7.    public partial class Form1 : Form
  8.    {
  9.        private Form modForm;
  10.  
  11.        public Form1()
  12.        {
  13.            InitializeComponent();
  14.            modForm = new Form();
  15.            modForm.Size = new Size(320, 200);
  16.            modForm.Text = "Form modale";
  17.            modForm.TopLevel = true;
  18.        }
  19.  
  20.        private void button1_Click(object sender, EventArgs e)
  21.        {
  22.            modForm.ShowDialog();
  23.        }
  24.    }
  25. }


 
aucun souci : pas d'objet supprimé si je clique x fois sur le bouton, et la Form modForm est bien affichée modalement :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2010 à 11:21:42    

Est ce que c'est pas dû aux objet Rad Telerik que j'utilise ? :s

Reply

Marsh Posté le 21-06-2010 à 11:26:26    

ça ne fonctionne pas j'ai toujours acces a ma fenetre principale meme avec ta technique j'ai oublié de te dire :( ....
 
poooo je suis sur que ce sont les Telerik controls qui font ça

Reply

Marsh Posté le 21-06-2010 à 11:28:13    

ben possible... t'as accés à leur source ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2010 à 11:31:08    

C'est verouillé :s Embetant tout cela ,  
 
meme dans myNewRad  je n'ai pas acces a la modification de l'attribut Modal... je ne peux que l'obtenir et pas le definir :(

Reply

Marsh Posté le 13-07-2010 à 11:24:26    

si tu veux une fenêtre qui bloque la fenêtre parent quand elle s'ouvre et qui la réactive quand elle se ferme tu peux utiliser ce genre de code  
 
code du bouton qui va lancer ta Form :
 

Code :
  1. private void BoutonLoadForm_Click(object sender, EventArgs e)
  2.         {
  3.             TaForm F = new TaForm ();
  4.             F.Shown += new EventHandler(DisableMe);
  5.             F.Disposed += new EventHandler(EnableMe);
  6.             F.Show();
  7.         }


 
code a mettre dans la Form parent :
 

Code :
  1. private void DisableMe(object sender, EventArgs e)
  2.         { this.Enabled = false; }
  3. private void EnableMe(object sender, EventArgs e)
  4.         { this.Enabled = true; this.Activate(); }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed