Ich habe in einem Form eine DataGridView und einen MonthCalender. In beiden soll der Monat und der Tag angezeigt werden.
Super wäre es, wenn in beiden der gleiche Tag dargestellt wird. 😁
Zum syncrnoisieren verwende ich folgende Ereignisse:
private void monthCalendar_DateChanged(object sender, DateRangeEventArgs e)
{
// Tag setzen
dgvDaysInMonth.CurrentCell = dgvDaysInMonth[0, e.Start.Day - 1];
dgvDaysInMonth.Rows[e.Start.Day - 1].Selected = true;
}
und
private void dgvDaysInMonth_RowEnter(object sender, DataGridViewCellEventArgs e)
{
DateTime date =
Convert.ToDateTime(dgvDaysInMonth[0, e.RowIndex].Value);
//Neuer Tag
this.monthCalendar.SetDate(date);
}
Jetzt werden wie wild Ereignisse durch die gegend gefeuert. Das ist nur suboptimal. Syncronisiere ich richtig?
Für Control-Synchronisierungen macht sich DataBinding i.a. ganz gut.
Wenn du eine DataSource hättest (etwa ein typisiertes Dataset, mit einer Tabelle mit Datumsen), könnteste sowohl Dataset als auch MonthCalendar über eine (dieselbe!) BindingSource daran binden.
Und an dieselbe BindingSource gebundene Controls zeigen denselben Wert an.
Der frühe Apfel fängt den Wurm.
Jo, dann musste wohl sowas wie Databinding nachprogrammieren. Aber deine Frage lautete: "Synchronisiere ich richtig?" - und ich findes suboptimal, was nachzuproggen, wasses schon gibt.
Der frühe Apfel fängt den Wurm.