---
title: SAIFMenuTop.clsMenuButton
summary: API reference for SAIFMenuTop.clsMenuButton.
status: draft
owner: SAIF documentation team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.V2.Menu
reference_type: package
---

# SAIFMenuTop.clsMenuButton

`SAIFMenuTop.clsMenuButton` is a `<Serializable()>` nested value object that carries the render-time state for a single `SAIFMenuTop` toolbar icon — visibility, enabled state, access key, image URL, tooltip, and one-click/indicator behavior flags. Instances are persisted in `ViewState` so button state survives postbacks without requiring `SAIFMenuTop` to recompute authorization-derived defaults on every request.

## Purpose
- Carries the per-button visibility (`Visible`)/enabled (`Enabled`) state that `SAIFMenuTop.RenderControl` and `OnPreRender` read to decide whether/how to render each toolbar icon.
- Carries presentation attributes (`AccessKey`, `ImageURL`, `Tooltip`) synchronized onto the corresponding `SAIFImageButton` each render pass.
- Carries click-guard/indicator behavior flags (`OneClick`, `DisableFormControlsOnClick`, `EnableIndicator`) consumed by `SAIFMenuTop`'s client-script wiring.

## Context
- Namespace: `SAIF.Presentation.Web.Controls.V2.Menu` (nested within `SAIFMenuTop`)
- Assembly/package: `SAIF.Presentation.Web.Controls.V2.Menu` (packaged within `SAIF.BOF.Presentation.Web.Infragistics103`)
- Decorated with `<Serializable()>` to support `ViewState` persistence.

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `ID` | `ReadOnly Property ID As String` | The button's identifier (e.g., `"InsertButton"`), set once via the constructor and used by `SAIFMenuTop.getImageButton`/`SAIFMenu.getImageButton` to locate the matching rendered `SAIFImageButton` control by ID. |
| `Visible` | `Property Visible As Boolean` | Determines whether `SAIFMenuTop` renders this button at all; set from the current page's `clsMenuAuthorizedItem` display flags (e.g., `IsDisplayInsert`). |
| `Enabled` | `Property Enabled As Boolean` | Determines whether the rendered button is interactive; when false, `SAIFMenuTop.DisableIcon` swaps in a `_d` disabled image variant. |
| `AccessKey` | `Property AccessKey As String` | Keyboard access key applied to the button, combined with a browser-specific hint prefix (e.g., `"Alt+I"`, or `"Shift+Alt+I"` on Firefox >= v2). |
| `ImageURL` | `Property ImageURL As String` | Site-relative path to the button's icon image (e.g., under `/Resources/MenuImages/`)*. |
| `Tooltip` | `Property Tooltip As String` | Tooltip text displayed for the button, sourced from the current page's per-action tooltip properties (e.g., `PrintToolTip`). |
| `OneClick` | `Property OneClick As Boolean` | Flags whether the button should be guarded against duplicate rapid clicks via the client-side `mnuOneClickOnly` script. |
| `DisableFormControlsOnClick` | `Property DisableFormControlsOnClick As Boolean` | Flags whether other form controls should be disabled while this button's postback is pending. |
| `EnableIndicator` | `Property EnableIndicator As Boolean` | Flags whether the busy-indicator CSS class/script should be applied to the button's rendered `SAIFImageButton`. |

## Behavioral notes
- Instances are constructed and populated by `SAIFMenuTop.BuildMenuIcons` and stored in `ViewState`, so button state persists across postbacks without re-deriving authorization defaults on every request*.
- `SAIFMenuTop.getImageButton(clsMenuButton)` reads this model's `ID` to locate the already-built corresponding `SAIFImageButton` control (via `FindControl`) for rendering; the control itself is constructed by `SAIFMenuTop.BuildMenuIcons`, not by `getImageButton`.

## Constraints and usage notes
- Not intended for use outside `SAIFMenuTop`; it is a private implementation-support value type exposed publicly only because it appears in the public `MenuButtons`/per-button properties on `SAIFMenuTop`*.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Presentation.Web.Controls.V2.Menu\SAIFMenuTop.vb`
