cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
2 juin 2006 à 09:17
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
2 juin 2006 à 13:09
Bonjour,
j'ai une application dans laquelle j'affiche plusieur panel les uns à coté des autres.
J'ai implémenté le fait que, lors d'un clic sur un panel, il prend le focus et une rectangle de sélection s'affiche autour de lui.
J'enlève ce rectangle lorsque le panel perd le focus.
J'ai surclasser la classe Panel en MyPanel en y ajoutant des variables dont
public bool selected = false;
spécifiant si le panel est selectionné ou non (je l'ai ajouté ensuite pour essayé de regler mon probleme mais ca n'a rien fait).
Tout fonctionne bien mais lorsque je clique sur un panel (le rectangle de selections s'affiche) et que je maximise ma form, ca perd les pédales et le rectangle reste affiché donc ensuite ca fait l'inverse, le panel est toujours "selectionné" (rectangle affiché) sauf lorsque je clique dessus.
Existe-t-il un autre moyen d'afficher un rectangle de sélection?
Connaissez vous un moyen pour résoudre mon problème?
Merci
f.colo
//Clic sur le panel
void p_Click(object sender, EventArgs e)
{
MyPanel p = (MyPanel)sender;
if (!p.Focused)
{
p.Focus();
p.Select();
}
}
//prise du focus du panel
void p_GotFocus(object sender, EventArgs e)
{
MyPanel p = (MyPanel)sender;
if (p.selected)
return;
this.comboBox4.SelectedIndex = p.numeroPanel - 1;
this._selectionRect = new Rectangle(
p.PointToScreen(new Point(0, 0)).X,
p.PointToScreen(new Point(0, 0)).Y,
p.Width,
p.Height);
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 2 juin 2006 à 09:33
Salut,
Je ne sais pas si c'est la meilleure solution, mais je dois dire que j'aurais dessiné dans le OnPaint et juste mis
p.selected = false; ou
p.selected = true;
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 2 juin 2006 à 10:44
Ok, ca fonctionne merci :), juste que le rectangle en bas et en gauche sont a l'extérieur.
Me reste plus qu'a savoir dessiner en pointiler :).
public class MyPanel : System.Windows.Forms.Panel
{
public bool focus = false;
public MyPanel(int num) : base()
{
this.Paint += new PaintEventHandler(MyPanel_Paint);
this.GotFocus += new EventHandler(MyPanel_GotFocus);
this.LostFocus += new EventHandler(MyPanel_LostFocus);
this.SizeChanged += new EventHandler(MyPanel_SizeChanged);
}
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 2 juin 2006 à 13:09
Merci, j'avais trouvé pour les pointillé :)
Pour supprimer le rectangle de sélection, j'avais trouvé également mais le soucis etait que je ne l'appelé pas au bon moment. Il n'y a pas de perte de focus lorsqu'on rezize la form principale et il disparaissait, ca mettait le bordel sur la form ensuite.
La solution que m'a proposé Bidou fonctionne aussi bien (même mieux ;) ).