Afficher une forme d'une manière progressive !!!

Résolu
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 - 16 janv. 2006 à 16:29
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 - 21 janv. 2006 à 12:21
Bonjour tout le monde ;

Comment faire pour faire apparaître une fenêtre (Form2) d'une manière progressive lorsque je clique sur un bouton sur Form1, c'est comme si qu'elle se glisse derrière Form1.

Merci à tous !!!

13 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 janv. 2006 à 19:41
hum... modifier la propriété location pour glisser la forme

Sébastien FERRAND
[MVP Visual C#]
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 janv. 2006 à 21:30
voici une source qui pourrait te servir : http://www.csharpfr.com/code.aspx?ID=35607

Sébastien FERRAND
[MVP Visual C#]
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 janv. 2006 à 16:50
tu peux jouer sur la propriété Opacity... avec un timer...
mais ca ne marche que sous xp et +

Sébastien FERRAND
[MVP Visual C#]
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
16 janv. 2006 à 16:57
Merci sebmafate ;

Je sais pas ect-ce possible de le faire avec Opacity !!! Mais c'est pas au sens qu'elle apparaisse d'une manière claire puis Opacity vers 100 !!!

Peut-être je me suis pas fait comprendre, ce que je voudrais, c'est que la Form2 démarre d'une position initiale jusqu'à ce qu'elle s'affiche complètement à la fin. C'est à dire elle change de positions koi !!! Elle se glisse derrière la Form1.

Merci !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 janv. 2006 à 17:01
ah ok... je ne vois pas trop la difficulté en gros...

il suffit d'afficher ta form2 avec les mêmes coordonnées que la form1... mais avec un z-index inférieur... ensuite du la glisse, tu changes le z-indx pour qu'elle soit au dessus et tu la reglisse

Sébastien FERRAND
[MVP Visual C#]
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
16 janv. 2006 à 17:07
Merci sebmafate pour ton aide ;

ça me parrait la solution... Pourrais-tu me donner un apperçu du code, je vois pas trop la définition du z-index !!!

Thanx a lot !!!
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
16 janv. 2006 à 18:12
En fait, c'est ce que je cherche, c'est comment la glisser ?



Merciiii !!!
0
nounours21_6 Messages postés 255 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
16 janv. 2006 à 19:41
salut,

il faut jouer sur les propriété 'top' pour la hauteur et 'left' pour la largeur...
ex :
int i;
for (i=10; i<50;i++)
{
this.top = i;
this.left = i;
}

enjoy @+
<<--<<--nOUnoURs-->>-->>
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
16 janv. 2006 à 20:07
Super, c'est tellement évident !!! Je n'y ai pas pensé... Sérieusement !!! Merci!!!



Donc là, pour afficher la 2nd forme, je mets


Form2 f = new Form2() ;

f.Show() ; // Pas ShowDialog()



J'ai 2 questions :

1 - Comment envoyer Form2 en arrière plan par rapport à Form1 ?

2 - Comment assurer une seule
instance de la fenêtre Form2 ??? Si je clique une seconde fois sur le
bouton de la Form1, j'aurai une deuxième fois Form2 qui s'affiche, une
3ème fois et ainsi de suite !!! Je cherche donc une fois cliqué sur le
bouton, j'aurai une seule Form2, et si je reclique une deuxième fois,
il se passe rien sans avoir à faire :


button1.Enabled = false





Merciiiiiiiii à tous !!!
0
nounours21_6 Messages postés 255 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
16 janv. 2006 à 20:19
essaye ca :

form2 f;
booleen ouvert = false;
private sub cliquebouton()
{
if(!ouvert)
{
f = new form2();
}
f.show();
ouvert=true;
}

<<--<<--nOUnoURs-->>-->>
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
17 janv. 2006 à 12:16
J'ai pas pu ouvrir ton projet sebmafate, apparemment c'est fait sous 2005. Je travaille sous Visual Studio .net 2003 !!! Je peux ouvrir les fichiers un par un, mais le mieux c'est d'ouvrir le projet pour que je suive les étapes !!!

Merci, merci !!!
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
17 janv. 2006 à 15:05
il est fait avec VS2005 mais le code qui t'interresse est dans la form1...

voici les extraits importants :

Form1.cs :


[DllImport(<VAR>"user32.dll"</VAR>, CharSet = CharSet.Auto, ExactSpelling =
true
)]
private
static
extern
bool
SetWindowPos(HandleRef hWnd, HandleRef WndInsertAfter,
int
x,
int
y,
int
cx,
int
cy,
int
flags);
private
const
int
SWP_NOACTIVATE = 0x10;

private
Form2 form2;
private
Timer timer;
private
Mode mode;

private
enum
Mode {
Allee,
Retour
}


public
Form1()
{
InitializeComponent();

timer =
new
Timer();
timer.Interval = 10;
timer.Tick +=
new
EventHandler(timer_Tick);
this
.mode = Mode.Allee;

}


void
timer_Tick(
object
sender, EventArgs e)
{
if
(
this
.mode == Mode.Allee && form2.Left >
this
.Right + 4)
{
this
.mode = Mode.Retour;
form2.BringToFront();
}
else
if
(
this
.mode == Mode.Retour && form2.Left <=
this
.Left) {
this
.mode = Mode.Allee;
this
.timer.Enabled =
false
;
form2.Focus();
return
;
}

if
(
this
.mode == Mode.Allee)
{
form2.Left += 4;
}
else
{
form2.Left -= 4;
}
}


private
void
button1_Click(
object
sender, EventArgs e)
{
form2 = Form2.GetInstance();

HandleRef hr2 =
new
HandleRef(form2, form2.Handle);
HandleRef hr1 =
new
HandleRef(
this
,
this
.Handle);


SetWindowPos(hr2, hr1,
this
.Left,
this
.Top, form2.Width, form2.Height, SWP_NOACTIVATE);
form2.Show();
this
.Focus();
timer.Enabled =
true
;
}

Form2.cs :

private
static
Form2 instance;
public
Form2()
{
InitializeComponent();
}

public
static
Form2 GetInstance() {
if
(instance ==
null
)
{
instance =
new
Form2();
}
return
instance;
}

Sébastien FERRAND
[MVP Visual C#]
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
21 janv. 2006 à 12:21
Merciiiiiiiiiiiiiiiiiiiiiiiiii sebmafate... C'est exactement, ou même plus, ce que je cherchais !!!

C'est merveilleusement impréssionnant !!!



Merciii !!!
0
Rejoignez-nous