Q: Welche ist die beste Vorgehensweise für die Auswahl eines Items in dem Calendar Control mit Programmierung?
Ich habe CurrentView auf Timetable gesetzt, und allerlei Items zu dem Schedule hinzugefügt, das mit diesem View verbunden wurde. Im Wesentlichen will ich das Item selektieren können, so dass es in die Ansicht des Kalenders verschoben, und nach dem Selektierungs-Stil geändert wird, als ob der Nutzer das Item angeklickt hat. Es findet keine In-Place Editierung statt.
A: Zur Selektierung der Items mit Programmierung fügen Sie sie zu der Calendar.ItemSelection-Collection hinzu. Zur Deselektierung der Items, entfernen Sie sie von der Collection. Der folgende Code selektiert das Item über die Referenz der Variable 'item'.
calendar.ItemSelection.Add(item);
Q: Mit welcher Eigenschaft kann man auf jeden der selektierten Tage zugreifen und sie anzeigen, z.B. in einem Nachrichtenfeld darstellen?
A: Sie können auf die selektierten Zeitbereiche über die Eigenschaft Calendar.Selection.Ranges zugreifen. Diese Eigenschaft gibt eine ArrayList einer geraden Zahl von DateTime-Objekten zurück, die in einer chronologischen Reihenfolge sortiert sind. Jedes Paar in der Liste stellt eine selektierte Zeitperiode dar. Zum Beispiel, wenn Sie eine einzelne Zeitperiode ausgewählt haben: von 01/01 0:00 AM bis 15/01 0:00 AM, dann wird das von dieser Eigenschaft zurückgegebene Array 2 DateTime-Objekte enthalten: bzw. (01/01 0:00 AM) und (15/01 0:00 AM).
Q: Was bedeutet 'Multiple Selection'?
A: Das Festlegen von SelectionAllowMultiple auf State.Disabled unterbindet die Auswahl eines Datenbereichs, der aus mehreren Elementen besteht, d.h. man kann nur ein einzelnes Element auswählen. Das Klicken und Ziehen mit der Maus wird nicht mehrere Elemente, sondern nur das zuletzt gezeigte Element auswählen, bevor die Maus ausgelöst wird. Zum Beispiel, wenn diese Eigenschaft unterdrückt wird, kann von den Anwendern in einer SingleMonth-Ansicht nur eine einzelne Tageszelle ausgewählt werden, während in einer Resourcen-Ansicht die Markierung nur eines einzelnen Zeitpunktes möglich ist. Dies führt meistens dazu, dass die Selektierung nicht sichtbar ist.
Im Allgemeinen bezieht sich die Calendar.Selection auf die Datum/Zeit-Auswahl im Rahmen des Controls, während die Calendar.ItemSelection für die Terminauswahl angewendet wird.
Q:Ich verwende den Kalender mit der Resourcen-Ansicht. Ich will die Auswahl mehrerer Elemente abschalten (d.h. die Auswahl nur eines Termins zur vorgegebenen Zeit zulassen).
Ich habe die Einstellung Calendar.SelectionAllowMultiple = Disabled versucht, aber ich kann immer noch mehrere Elemente selektieren (durch Drücken und Halten der Ctrl-Taste und Anklicken des Elements). Können Sie mir bitte Hinweise geben, wie ich dies implementieren kann?
A: Sie können dies erfüllen, indem Sie das Ereignis Calendar.ItemSelectionChanged behandeln. Der folgende Code zeigt die Vorgehensweise:
private void calendar_ItemSelectionChanged(object sender, ItemSelectionEventArgs e) { if (e.IsSelected) { calendar.ItemSelection.Clear(); calendar.ItemSelection.Add(e.Item); } }