GcCalendarCellでカレンダーの表示を切り替える方法について、以下に解説します。
GcCalendarEditingControl.ShowContextMenuプロパティを使用すると、セル上でマウスの右ボタンをクリックしたときに表示されるコンテキストメニューの表示/非表示を切り替えられます。
また、ContextMenuContentプロパティを使用することでコンテキストメニューに表示する項目の種類を設定できます。休日スタイル(HolidayStyles)、”今日へ移動”(GoToToday)、もしくはその両方(both)の種類が設定可能になっており、既定値はBoth(両方)です。
ContextMenuContentの値 | コンテキストメニューの表示内容 |
---|---|
HolidayStyles | 休日スタイルを指定または解除 |
GoToToday | 今日に該当するカレンダー上の日付への移動 |
Both | HolidayStylesとGoToTodayの両方 |
|
表示するコンテキストメニューをデフォルトのコンテキストメニューから独自のコンテキストメニューに切り替えるにはGcCalendarEditingControl.ContextMenuプロパティを使用します。
なお、デフォルトのコンテキストメニューはHolidayStyleCollectionクラスにHolidayStyleオブジェクトが追加されているときだけ表示されます。このメニューは、実行時に休日スタイルを指定または解除するために用意されています。
次のコードは、GcMultiRow.EditingControlShowingイベントを使用してGcCalendarCellの編集セルに独自のコンテキストメニューを表示します。また、フォームに配置された CheckBoxの値によってコンテキストメニューの表示/非表示を切り替えます。
Imports GrapeCity.Win.MultiRow Imports PlusPakCell = GrapeCity.Win.MultiRow.PlusPak Private contextMenu1 As ContextMenu Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim GcCalendarCell1 As New PlusPakCell.GcCalendarCell() GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcCalendarCell1}) GcMultiRow1.RowCount = 10 ' コンテキストメニューの設定 Dim item1 As New MenuItem("AAA") Dim item2 As New MenuItem("BBB") Dim item3 As New MenuItem("CCC") contextMenu1 = New ContextMenu(New MenuItem() {item1, item2, item3}) End Sub Private Sub GcMultiRow1_EditingControlShowing(sender As Object, e As EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing Dim gcCalendarEditor As PlusPakCell.GcCalendarEditingControl = DirectCast(e.Control, PlusPakCell.GcCalendarEditingControl) If Not gcCalendarEditor Is Nothing Then ' GcCalendarCellの編集セルにコンテキストメニューを設定 gcCalendarEditor.ContextMenu = contextMenu1 ' コンテキストメニューの表示/非表示の設定 If CheckBox1.Checked Then gcCalendarEditor.ShowContextMenu = True Else gcCalendarEditor.ShowContextMenu = False End If End If End Sub
using GrapeCity.Win.MultiRow; using PlusPakCell = GrapeCity.Win.MultiRow.PlusPak; private ContextMenu contextMenu1; private void Form1_Load(object sender, EventArgs e) { PlusPakCell.GcCalendarCell gcCalendarCell1 = new PlusPakCell.GcCalendarCell(); gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcCalendarCell1 }); gcMultiRow1.RowCount = 10; // コンテキストメニューの設定 MenuItem item1 = new MenuItem("AAA"); MenuItem item2 = new MenuItem("BBB"); MenuItem item3 = new MenuItem("CCC"); contextMenu1 = new ContextMenu(new MenuItem[] { item1, item2, item3 }); } private void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e) { PlusPakCell.GcCalendarEditingControl gcCalendarEditor = (e.Control as PlusPakCell.GcCalendarEditingControl); if (gcCalendarEditor != null) { // GcCalendarCellの編集セルにコンテキストメニューを設定 gcCalendarEditor.ContextMenu = contextMenu1; // コンテキストメニューの表示/非表示の設定 if (checkBox1.Checked) { gcCalendarEditor.ShowContextMenu = true; } else { gcCalendarEditor.ShowContextMenu = false; } } }
GcCalendarCellでは、ShowNavigatorプロパティの設定によって、ナビゲータをOutlookスタイルまたは表示なしに設定することができます。ナビゲータをOutlookスタイルにすることで、表示されている年や月を自由に切り替えられます。
また、Outlookスタイルのナビゲータに表示されているスキップボタンの1回の操作で移動する月の数は、ScrollRateプロパティで設定します。
ShowNavigatorプロパティがCalendarNavigators.Outlookの場合、ナビゲータを左クリックすることで年と月のリストが表示されます。このリストはShowNavigationPopupListプロパティをFalseに設定することで非表示に設定可能です。
以下のコードはナビゲータをOutlookに設定し、年と月のリストを非表示にする例です。
Imports GrapeCity.Win.MultiRow Imports PlusPakCell = GrapeCity.Win.MultiRow.PlusPak Dim GcCalendarCell1 = New PlusPak.GcCalendarCell() ' ナビゲータをOutlookに設定します。 GcCalendarCell1.ShowNavigator = PlusPakCell.CalendarNavigators.Outlook ' 年月リストを非表示に設定します。 GcCalendarCell1.ShowNavigationPopupList = False GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcCalendarCell1}) GcMultiRow1.RowCount = 10
using GrapeCity.Win.MultiRow; using PlusPakCell = GrapeCity.Win.MultiRow.PlusPak; PlusPakCell.GcCalendarCell gcCalendarCell1 = new PlusPakCell.GcCalendarCell(); //ナビゲータをOutlookに設定します。 gcCalendarCell1.ShowNavigator = PlusPakCell.CalendarNavigators.Outlook; //年月リストを非表示に設定します。 gcCalendarCell1.ShowNavigationPopupList = false; gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcCalendarCell1 }); gcMultiRow1.RowCount = 10;