Behavior and Interaction

This feature controls how the Siticone MenuButton responds to user actions, including read-only states, dynamic icon switching, and feedback mechanisms such as shake and beep.

Overview

The Behavior & Interaction feature enables developers to configure how the SiticoneMenuButton responds to user input. It includes settings for making the button read-only, toggling between menu and X icons upon clicking, and providing feedback through shake and beep effects when interactions are not permitted. This ensures that the control can adapt to various application contexts, providing appropriate interactive cues.


Feature Details

The table below summarizes the key behavior and interaction properties:

Property
Data Type
Default Value
Description

IsReadOnly

bool

false

Determines if the button is read-only; when true, user clicks trigger feedback without performing actions.

AllowDynamicSwitch

bool

true

Allows the button to switch between the menu icon and the X icon when clicked.

IsOpened

bool

false

Indicates whether the menu is in the opened (X icon) or closed (menu lines) state.

CanShake

bool

true

Enables a shaking animation as feedback when the button is read-only and clicked.

CanBeep

bool

true

Enables a beep sound as auditory feedback when the button is read-only and clicked.

Cursor

Cursor

Cursors.Hand / Cursors.No (if read-only)

Automatically adjusts the cursor to indicate interactivity or a read-only state.


Code Examples and Samples

Below are several code examples demonstrating how to integrate and customize the behavior and interaction features of the SiticoneMenuButton in a .NET WinForms application.

Sample Code: Configuring Read-Only Behavior with Feedback

This example shows how to configure the button to be read-only so that clicking it produces a shake animation and a beep sound rather than performing its normal action.

using System;
using System.Drawing;
using System.Windows.Forms;
using SiticoneNetFrameworkUI; // Ensure you reference the correct namespace

namespace ReadOnlyBehaviorDemo
{
    public class MainForm : Form
    {
        private SiticoneMenuButton menuButton;
        private CheckBox chkIsReadOnly;

        public MainForm()
        {
            InitializeComponents();
        }

        private void InitializeComponents()
        {
            // Configure the SiticoneMenuButton for read-only behavior
            menuButton = new SiticoneMenuButton
            {
                Size = new Size(60, 60),
                Location = new Point(50, 50),
                IsReadOnly = true, // Set button to read-only
                CanShake = true,   // Enable shaking animation feedback
                CanBeep = true     // Enable beep sound feedback
            };

            // Checkbox to toggle the read-only state dynamically
            chkIsReadOnly = new CheckBox
            {
                Text = "Read-Only Mode",
                Location = new Point(50, 130),
                Checked = menuButton.IsReadOnly
            };
            chkIsReadOnly.CheckedChanged += (s, e) =>
            {
                menuButton.IsReadOnly = chkIsReadOnly.Checked;
                // Update the cursor based on the read-only state
                menuButton.Cursor = menuButton.IsReadOnly ? Cursors.No : Cursors.Hand;
                menuButton.Invalidate();
            };

            Controls.Add(menuButton);
            Controls.Add(chkIsReadOnly);

            Text = "Read-Only Behavior Demo";
            Size = new Size(300, 250);
            StartPosition = FormStartPosition.CenterScreen;
        }

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new MainForm());
        }
    }
}

Sample Code: Dynamic Icon Switching and Interaction

This example demonstrates how to use the AllowDynamicSwitch and IsOpened properties to toggle between the menu and X icons. It also shows how the button behaves differently in interactive mode.

using System;
using System.Drawing;
using System.Windows.Forms;
using SiticoneNetFrameworkUI;

namespace DynamicSwitchDemo
{
    public class MainForm : Form
    {
        private SiticoneMenuButton menuButton;
        private Button btnToggleReadOnly;

        public MainForm()
        {
            InitializeComponents();
        }

        private void InitializeComponents()
        {
            // Configure the SiticoneMenuButton with dynamic icon switching
            menuButton = new SiticoneMenuButton
            {
                Size = new Size(60, 60),
                Location = new Point(40, 40),
                AllowDynamicSwitch = true, // Enable dynamic switch between menu and X icon
                IsOpened = false,          // Initially display menu icon
                IsReadOnly = false         // Button is interactive by default
            };

            // Button to toggle the read-only mode for demonstration purposes
            btnToggleReadOnly = new Button
            {
                Text = "Toggle Read-Only",
                Location = new Point(40, 120),
                Size = new Size(120, 30)
            };
            btnToggleReadOnly.Click += (s, e) =>
            {
                menuButton.IsReadOnly = !menuButton.IsReadOnly;
                menuButton.Cursor = menuButton.IsReadOnly ? Cursors.No : Cursors.Hand;
                menuButton.Invalidate();
            };

            Controls.Add(menuButton);
            Controls.Add(btnToggleReadOnly);

            Text = "Dynamic Icon & Interaction Demo";
            Size = new Size(300, 250);
            StartPosition = FormStartPosition.CenterScreen;
        }

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new MainForm());
        }
    }
}

Sample Code: Combining Feedback with Dynamic Interaction

This sample demonstrates a scenario where the button's behavior dynamically changes based on its state, switching icons on click while providing appropriate feedback when in read-only mode.

using System;
using System.Drawing;
using System.Windows.Forms;
using SiticoneNetFrameworkUI;

namespace CombinedBehaviorDemo
{
    public class MainForm : Form
    {
        private SiticoneMenuButton menuButton;
        private CheckBox chkDynamicSwitch;

        public MainForm()
        {
            InitializeComponents();
        }

        private void InitializeComponents()
        {
            // Configure the button with dynamic switching and feedback
            menuButton = new SiticoneMenuButton
            {
                Size = new Size(60, 60),
                Location = new Point(50, 50),
                IsReadOnly = false,
                AllowDynamicSwitch = true,
                IsOpened = false,
                CanShake = true,
                CanBeep = true
            };

            // Checkbox to enable/disable dynamic icon switching
            chkDynamicSwitch = new CheckBox
            {
                Text = "Enable Dynamic Switch",
                Location = new Point(50, 130),
                Checked = menuButton.AllowDynamicSwitch
            };
            chkDynamicSwitch.CheckedChanged += (s, e) =>
            {
                menuButton.AllowDynamicSwitch = chkDynamicSwitch.Checked;
                menuButton.Invalidate();
            };

            Controls.Add(menuButton);
            Controls.Add(chkDynamicSwitch);

            Text = "Combined Behavior Demo";
            Size = new Size(300, 250);
            StartPosition = FormStartPosition.CenterScreen;
        }

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new MainForm());
        }
    }
}

Key Points

Aspect
Details

User Feedback

Provides visual (shake) and auditory (beep) feedback when the control is in a read-only state.

Dynamic Interactivity

Supports toggling between menu and X icons through the AllowDynamicSwitch and IsOpened properties.

State-Dependent Behavior

Changes the cursor and interaction modes based on the IsReadOnly state to clearly communicate interactivity.


Best Practices

Practice
Explanation

Set Appropriate Read-Only States

Use the IsReadOnly property to disable interaction in contexts where changes should not occur, ensuring consistency.

Provide Clear Feedback

Enable CanShake and CanBeep to inform users when an action is not permitted, but avoid excessive or distracting feedback.

Use Dynamic Switching Intelligently

Toggle the AllowDynamicSwitch property only when it makes sense in the application context to avoid confusing the user.

Update Cursor Appropriately

Always update the Cursor property based on the control state to enhance usability and indicate interactivity clearly.


Common Pitfalls

Pitfall
How to Avoid

Inadequate Feedback in Read-Only Mode

Ensure that both visual and auditory feedback (shake and beep) are enabled when the button is set to read-only.

Overuse of Dynamic Switching

Avoid unnecessary toggling of the IsOpened property, which may confuse users about the current state of the button.

Neglecting to Refresh the Control

Always call Invalidate() after modifying behavior-related properties to ensure the UI reflects the current state accurately.


Usage Scenarios

Scenario
How Behavior & Interaction Helps

Secure or Limited Interaction Modes

Use IsReadOnly to disable changes when the button should not trigger actions, providing clear feedback.

Context-Sensitive UI

Dynamically switch between menu and X icons with AllowDynamicSwitch and IsOpened to match user interactions.

Interactive Feedback in Forms

Provide immediate auditory and visual cues (shake, beep) when user actions are restricted or denied.


Review

The Behavior & Interaction feature of the SiticoneMenuButton control is essential for managing user inputs and ensuring that interactions are intuitive and state-appropriate. By using properties such as IsReadOnly, AllowDynamicSwitch, IsOpened, CanShake, and CanBeep, developers can finely tune the control's responsiveness and feedback, ensuring a consistent and effective user experience across different application scenarios.


Summary

The Behavior & Interaction feature empowers developers to control the SiticoneMenuButton’s interactive states and feedback mechanisms. With configurable options to toggle between interactive and read-only modes, dynamically switch icons, and provide both visual and auditory feedback, this feature ensures that the button behaves appropriately within the application context, enhancing both usability and user experience.


Additional Sections

Troubleshooting

Issue
Resolution

Button Not Responding to Clicks in Read-Only Mode

Verify that IsReadOnly is correctly set and that CanShake/CanBeep are enabled to provide feedback on user clicks.

Dynamic Icon Switching Not Working

Ensure that AllowDynamicSwitch is set to true and that Invalidate() is called after toggling the IsOpened property.

Cursor Not Updating

Check that the Cursor property is updated in accordance with the IsReadOnly state.

Future Enhancements

Enhancement
Description

Customizable Feedback Effects

Allow developers to customize the intensity and duration of shake and beep effects to better match application themes.

Advanced Interaction Modes

Introduce additional states or transitions (e.g., hover states for read-only buttons) to further enhance interactivity.

By following this documentation, developers can effectively implement and customize the Behavior & Interaction features of the SiticoneMenuButton control, ensuring that it responds appropriately to user inputs and maintains a consistent interactive experience across various application scenarios.

Last updated