# \[.Net\]Refresh d'un objet (MonthCalendar)

**URL:** <https://forum.geekzone.fr/t/net-refresh-dun-objet-monthcalendar/30044>\
**Category:** Dev\
**Created:** [Juillet 21, 2006, 9:14 UTC](https://forum.geekzone.fr/t/net-refresh-dun-objet-monthcalendar/30044 "2006-07-21T09:14:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luk](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/luk/32/125114_2.png) [@Luk](https://forum.geekzone.fr/u/Luk)\
**Post date:** [Juillet 21, 2006, 9:14 UTC](https://forum.geekzone.fr/t/net-refresh-dun-objet-monthcalendar/30044/1 "2006-07-21T09:14:52Z")

</div>

Hello,

Dans la suite de mes pérégrinations en C#, je suis en train d’essayer d’avoir le comportement suivant d’un monthCalendar : Je clique sur une date, et il me sélectionne la plage de date correspondant à la semaine cliquée (du mercredi au mercredi sinon c’est pas drôle).

J’ai donc ajouté un handler sur l’event DateChanged (j’ai tenté avec DateSelected, même effet), et quand je clique, il change le SelectionStart et le SelectionEnd comme il faut.

Le problème, c’est que ca me donne ca :  
[![](http://pix.nofrag.com/c3/da/8f214434692ad11edfc561cf3fd4.gif)](http://pix.nofrag.com/c3/da/8f214434692ad11edfc561cf3fd4.html)

Ce qui fait supra mal aux yeux. J’essaie pourtant de faire un

```auto

```

après mes modifs, mais ça ne change rien.

Je ne vois pas trop comment lui dire de repeindre le contrôle. Surtout que si je le sors de l’écran pour le remettre, le problème ne se règle pas (ce qui devrait être le cas si c’était juste un problème de Paint, non?)

Je joins le projet au cas où ca vous intéresse B)  
[attachment=989:attachment]

et le code incriminé :

Tout le machin RefreshEnCours sert à inhiber temporairement l’event, vu que sinon le dateChanged lancerait un autre DateChanged, …

[code] private bool refreshEnCours = false;

```
	  private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
	  {
		  if (!refreshEnCours)
		  {
			  refreshEnCours = true;
			 DateTime maDate = monthCalendar1.SelectionStart;
			  SelectionnerSemaine(maDate);
			  refreshEnCours = false;
		  }

	  }

	  private void SelectionnerSemaine(DateTime maDate)
	  {
		 int ecart = (maDate.DayOfWeek - DayOfWeek.Wednesday + 7) % 7;
		  Console.WriteLine(ecart);
		  monthCalendar1.SelectionStart = maDate.AddDays(-ecart - 1);
		  monthCalendar1.SelectionEnd = maDate.AddDays(-ecart + 6);
		  monthCalendar1.Invalidate(true);

	  }[/code]

```

---

<div class="post-metadata">

**Author:** ![GloP](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/glop/32/128237_2.png) [@GloP](https://forum.geekzone.fr/u/GloP)\
**Post date:** [Juillet 21, 2006, 10:54 UTC](https://forum.geekzone.fr/t/net-refresh-dun-objet-monthcalendar/30044/2 "2006-07-21T10:54:22Z")

</div>

Dans la doc:

> [@](#):
>
> Setting the SelectionRange for a MonthCalendar control that has visual styles enabled will result in the selection range not painting correctly on the control.

[http://msdn2.microsoft.com/en-us/library/s…ctionrange.aspx](http://msdn2.microsoft.com/en-us/library/system.windows.forms.monthcalendar.selectionrange.aspx)

C’est un truc de la pre-histoire ce controle. Pas sur que tu veuilles utiliser ca…

---

<div class="post-metadata">

**Author:** ![Luk](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/luk/32/125114_2.png) [@Luk](https://forum.geekzone.fr/u/Luk)\
**Post date:** [Juillet 21, 2006, 11:35 UTC](https://forum.geekzone.fr/t/net-refresh-dun-objet-monthcalendar/30044/3 "2006-07-21T11:35:50Z")

</div>

rah putain, merci j’avais pas pensé à ce coup là.  
Y’a un autre contrôle qui a le mêmes genre de fonctionnalités? (j’ai utilisé celui là vu qu’il est dans la toolbox)

---

<div class="post-metadata">

**Author:** ![the\_webrunner](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/the_webrunner/32/1220_2.png) [@the\_webrunner](https://forum.geekzone.fr/u/the_webrunner)\
**Post date:** [Juillet 21, 2006, 3:52 UTC](https://forum.geekzone.fr/t/net-refresh-dun-objet-monthcalendar/30044/4 "2006-07-21T15:52:42Z")

</div>

En gratuit, chépa…  
En payant par contre il y a celui là, et il est ultime : [telerik calendar](http://www.telerik.com/r.a.d.controls/Calendar/Examples/Design/Sunny/DefaultCS.aspx)

---

<div class="post-metadata">

**Author:** ![GloP](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/glop/32/128237_2.png) [@GloP](https://forum.geekzone.fr/u/GloP)\
**Post date:** [Juillet 21, 2006, 8:53 UTC](https://forum.geekzone.fr/t/net-refresh-dun-objet-monthcalendar/30044/5 "2006-07-21T20:53:34Z")

</div>

C’est pas du web, c’est du win B)
