Category / Section
How to determine which child control in SfCalendar control has focus?
2 mins read
SfCalendar control is a combination of different controls like CalendarGrid, None and Today Button’s. End user can navigate between its sub controls using Tab key and it will be help for end user, if there is any option to know which part of SfCalendar control is focused currently. The ActiveControl option available in Form can be helpful in this case.
The following code demonstrates the same.
Code Example: [C#]
/// <summary> /// Occurs when the Form is load /// </summary> private void Form1_Load(object sender, EventArgs e) { // To display Footer part of SfCalendar this.sfCalendar.ShowFooter = true; this.KeyPreview = true; this.KeyUp += Form1_KeyUp; } /// <summary> /// Invoked when Key up /// </summary> private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Tab) { UpdateActiveControl(); } } /// <summary> /// To update Active / Focused control in SfCalendar /// </summary> private void UpdateActiveControl() { if (this.ActiveControl != null && this.ActiveControl.ContainsFocus) { if (this.ActiveControl.Text == "None") { MessageBox.Show("None Button", "Focused Control"); } else if (this.ActiveControl.Text == "Today") { MessageBox.Show("Today Button", "Focused Control"); } else if (this.ActiveControl is Syncfusion.WinForms.Input.SfCalendar) { MessageBox.Show("SfCalendar", "Focused Control"); } } }
Code Example: [VB]
''' <summary> ''' Occurs when the Form is load ''' </summary> Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load ' To display Footer part of SfCalendar Me.sfCalendar.ShowFooter = True Me.KeyPreview = True AddHandler Me.KeyUp, AddressOf Form1_KeyUp End Sub ''' <summary> ''' Invoked when Key up ''' </summary> Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) If e.KeyData = Keys.Tab Then UpdateActiveControl() End If End Sub ''' <summary> ''' To update Active / Focused control in SfCalendar ''' </summary> Private Sub UpdateActiveControl() If Me.ActiveControl IsNot Nothing AndAlso Me.ActiveControl.ContainsFocus Then If Me.ActiveControl.Text = "None" Then MessageBox.Show("None Button", "Focused Control") ElseIf Me.ActiveControl.Text = "Today" Then MessageBox.Show("Today Button", "Focused Control") ElseIf TypeOf Me.ActiveControl Is Syncfusion.WinForms.Input.SfCalendar Then MessageBox.Show("SfCalendar", "Focused Control") End If End If End Sub
Screenshot:
Sample
C#: SfCalendar_C#
VB: SfCalendar_VB