private void SelectNextAvailablePage(KryptonPage begin) { // Generate event to show it is now deselected OnDeselected(new KryptonPageEventArgs(begin, Pages.IndexOf(begin))); KryptonPage newSelection = null; KryptonPage firstEnabled = null; KryptonPage firstDisabled = null; // Start the search by moving forwards bool forward = true; // Start searching from the provided page KryptonPage start = begin; // Process all pages except the current one to find available pape for (int i = 0; i < Pages.Count - 1; i++) { KryptonPage next; // Are we already at the last page in the pages collection? if (Pages.IndexOf(start) == (Pages.Count - 1)) { // Then need to reverse searching direction forward = false; // Next page is the one before the beginning page next = Pages[Pages.IndexOf(begin) - 1]; } else { // Otherwise just move to the next page in sequence next = Pages[Pages.IndexOf(start) + (forward ? 1 : -1)]; } // Can only select a visible page if (next.LastVisibleSet) { // Track the first found enabled and disabled pages found if (next.Enabled && (firstEnabled == null)) firstEnabled = next; else if (!next.Enabled && (firstDisabled == null)) firstDisabled = next; // Create event information KryptonPageCancelEventArgs args = new KryptonPageCancelEventArgs(next, Pages.IndexOf(next)); // Disabled pages default to not becoming selected args.Cancel = !next.Enabled; // Give event handlers a chance to cancel the selection of the new page OnSelecting(args); // Does this page want the selection? if (!args.Cancel) { newSelection = next; break; } } // Move forward a page for next loop start = next; } // If no page wants the new selection if (newSelection == null) { // Then force to the first enabled page if (firstEnabled != null) newSelection = firstEnabled; else { // Nothing enabled, so force to first disabled page if (firstDisabled != null) newSelection = firstDisabled; } } // Use new selection _selectedPage = newSelection; // If a new selection was made if (SelectedPage != null) { // Generate event to show it is now selected OnSelected(new KryptonPageEventArgs(SelectedPage, SelectedIndex)); } // Generate the event that can be data bound OnSelectedPageChanged(EventArgs.Empty); }
/// <summary> /// Raises the Selecting event. /// </summary> /// <param name="e">A KryptonPageCancelEventArgs containing event details.</param> protected virtual void OnSelecting(KryptonPageCancelEventArgs e) { if (Selecting != null) Selecting(this, e); }
private void SelectFirstAvailablePage() { KryptonPage newSelection = null; KryptonPage firstEnabled = null; KryptonPage firstDisabled = null; // Process all pages for (int i = 0; i < Pages.Count; i++) { // Get the page to examine KryptonPage next = Pages[i]; // Can only select a visible page if (next.LastVisibleSet) { // Track the first found enabled and disabled pages found if (next.Enabled && (firstEnabled == null)) firstEnabled = next; else if (!next.Enabled && (firstDisabled == null)) firstDisabled = next; // Create event information KryptonPageCancelEventArgs args = new KryptonPageCancelEventArgs(next, Pages.IndexOf(next)); // Disabled pages default to not becoming selected args.Cancel = !next.Enabled; // Give event handlers a chance to cancel the selection of the new page OnSelecting(args); // Does this page want the selection? if (!args.Cancel) { newSelection = next; break; } } } // If no page wants the new selection if (newSelection == null) { // Then force to the first enabled page if (firstEnabled != null) newSelection = firstEnabled; else { // Nothing enabled, so force to first disabled page if (firstDisabled != null) newSelection = firstDisabled; } } // Use new selection _selectedPage = newSelection; // If a new selection was made if (SelectedPage != null) { // Generate event to show it is now selected OnSelected(new KryptonPageEventArgs(SelectedPage, SelectedIndex)); } // Generate the event that can be data bound OnSelectedPageChanged(EventArgs.Empty); }
private void kryptonNavigator1_Selecting(object sender, KryptonPageCancelEventArgs e) { AddOutput("Selecting \t\t '" + e.Item.Text + "'"); }