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 :
Ce qui fait supra mal aux yeux. J’essaie pourtant de faire un
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]