---
description: >-
  This feature provides developers with control over text selection behavior and
  editing operations within the SiticoneCardNumberBox control, allowing for
  advanced text manipulation and user interaction
---

# Selection and Text Editing

## Overview

The Selection & Text Editing feature of the SiticoneCardNumberBox control exposes properties and methods that allow you to manage text selection, editing, and content constraints. You can programmatically select text, clear the input, or manage the caret position. In addition, the control supports custom selection styling through properties such as selection background and foreground colors, as well as selection height adjustments. These capabilities enhance user interactions by enabling precise editing experiences and dynamic UI responses.

***

### Property and Method Details

The table below summarizes the key properties and methods related to selection and text editing:

| Property / Method             | Description                                                           | Default Value / Notes                                                  |
| ----------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Text                          | The primary property for getting or setting the current text content. | Inherited from Control; supports customization via overrides.          |
| MaxLength                     | Limits the number of characters allowed in the control.               | 32767 by default; can be set to restrict input length.                 |
| SelectionBackColor            | The background color used when text is selected.                      | Typically set to a contrasting color (e.g., a shade of blue).          |
| SelectionForeColor            | The foreground (text) color used for the selected text.               | Usually set to a system highlight text color.                          |
| SelectionHeight               | The height (in pixels) of the selection highlight.                    | 0 by default, meaning it defaults to the Font.Height if not specified. |
| Select(int start, int length) | Programmatically selects a specified range of text.                   | Allows custom selection based on start index and length.               |
| SelectAll()                   | Selects all text within the control.                                  | Provides an easy way to highlight the entire content.                  |
| Clear()                       | Clears all the text from the control.                                 | Resets the control content and updates the caret position.             |

***

### Code Examples

#### Example 1: Basic Text Editing and Selection

This example shows how to set text, select a portion of it, and clear the content programmatically.

```csharp
// Create an instance of the SiticoneCardNumberBox control
SiticoneCardNumberBox cardNumberBox = new SiticoneCardNumberBox();

// Set initial text content
cardNumberBox.Text = "4111 1111 1111 1111";

// Programmatically select a portion of the text (e.g., the first 4 digits)
cardNumberBox.Select(0, 4);

// Later, clear the text content if needed
cardNumberBox.Clear();

// Add the control to your form
this.Controls.Add(cardNumberBox);
cardNumberBox.Location = new Point(20, 20);
cardNumberBox.Size = new Size(320, 50);
```

#### Example 2: Customizing Selection Appearance

The following example demonstrates how to adjust the selection colors and height for a better visual experience.

```csharp
// Create the control instance
SiticoneCardNumberBox cardNumberBox = new SiticoneCardNumberBox();

// Set custom selection background and foreground colors
cardNumberBox.SelectionBackColor = Color.LightBlue;
cardNumberBox.SelectionForeColor = Color.White;

// Optionally, adjust the selection height (if desired, otherwise defaults to Font.Height)
cardNumberBox.SelectionHeight = 20;

// Add the control to your form
this.Controls.Add(cardNumberBox);
cardNumberBox.Location = new Point(20, 100);
cardNumberBox.Size = new Size(320, 50);
```

#### Example 3: Handling User Selection in an Event

This example shows how to subscribe to text change or key events to update the UI based on the current selection.

```csharp
// Create and configure the control
SiticoneCardNumberBox cardNumberBox = new SiticoneCardNumberBox();
cardNumberBox.Text = "1234 5678 9012 3456";

// Subscribe to a key event (e.g., KeyUp) to process selection changes
cardNumberBox.KeyUp += (sender, e) =>
{
    // For demonstration, output the selected text
    string selectedText = cardNumberBox.Text.Substring(
        Math.Min(cardNumberBox.SelectionStart, cardNumberBox.Text.Length),
        Math.Min(cardNumberBox.SelectionLength, cardNumberBox.Text.Length - cardNumberBox.SelectionStart)
    );
    Console.WriteLine("Selected text: " + selectedText);
};

// Add the control to the form
this.Controls.Add(cardNumberBox);
cardNumberBox.Location = new Point(20, 180);
cardNumberBox.Size = new Size(320, 50);
```

***

### Key Points

The table below summarizes the key aspects of the Selection & Text Editing feature:

<table><thead><tr><th width="211">Topic</th><th>Description</th></tr></thead><tbody><tr><td>Text Manipulation</td><td>Use the Text property to set or retrieve the control content and manage editing operations.</td></tr><tr><td>Selection Control</td><td>Programmatically select, clear, or modify text selections using provided methods.</td></tr><tr><td>Visual Customization</td><td>Customize selection appearance through properties like SelectionBackColor, SelectionForeColor, and SelectionHeight.</td></tr></tbody></table>

***

### Best Practices

The table below outlines recommended practices for effective text editing and selection management:

<table><thead><tr><th width="349">Best Practice</th><th>Explanation</th></tr></thead><tbody><tr><td>Limit text length using MaxLength</td><td>Prevent unexpected input overflow by setting a reasonable MaxLength for your application.</td></tr><tr><td>Customize selection colors to maintain contrast</td><td>Ensure selected text is clearly visible by choosing appropriate background and foreground colors.</td></tr><tr><td>Use programmatic selection methods for better user experience</td><td>Leverage Select and SelectAll methods to assist users in quickly editing and managing text.</td></tr><tr><td>Monitor user interactions with event subscriptions</td><td>Update the UI dynamically based on selection changes or key events to guide user input effectively.</td></tr></tbody></table>

***

### Common Pitfalls

The table below lists common pitfalls in text editing and selection management, along with ways to avoid them:

<table><thead><tr><th width="361">Pitfall</th><th>How to Avoid It</th></tr></thead><tbody><tr><td>Losing track of the caret position after text changes</td><td>Use methods like Clear() and Select() to explicitly manage the caret and selection state.</td></tr><tr><td>Inconsistent selection highlighting</td><td>Ensure SelectionBackColor and SelectionForeColor are set to colors that provide sufficient contrast.</td></tr><tr><td>Overriding user selection inadvertently</td><td>Be cautious when programmatically modifying the text or selection; test with various input scenarios.</td></tr><tr><td>Neglecting MaxLength restrictions</td><td>Always set and validate MaxLength to prevent unexpected user input or buffer overflows.</td></tr></tbody></table>

***

### Usage Scenarios

The table below describes several scenarios where text editing and selection features are essential:

<table><thead><tr><th width="277">Scenario</th><th>Description</th></tr></thead><tbody><tr><td>Data entry forms</td><td>Manage user input by limiting text length and providing programmatic selection for ease of editing.</td></tr><tr><td>Payment processing interfaces</td><td>Ensure credit card numbers are correctly formatted, selected, and validated for error-free processing.</td></tr><tr><td>Custom text editors</td><td>Enable advanced text manipulation features such as undo/redo, selection customization, and content clearing.</td></tr></tbody></table>

***

### Real Life Usage Scenarios

<table><thead><tr><th width="319">Scenario</th><th>Example</th></tr></thead><tbody><tr><td>Online banking portal</td><td>Automatically select and highlight parts of account numbers for quick copying or review.</td></tr><tr><td>E-commerce checkout page</td><td>Programmatically select text in credit card fields for easier editing and error correction by users.</td></tr><tr><td>Administrative tools and dashboards</td><td>Allow administrators to clear, select, and edit data fields with custom selection highlighting for better visibility.</td></tr></tbody></table>

***

### Troubleshooting Tips

The table below provides troubleshooting advice for common issues related to text editing and selection:

<table><thead><tr><th width="232">Issue</th><th>Potential Cause</th><th>Recommended Action</th></tr></thead><tbody><tr><td>Text selection not highlighting properly</td><td>SelectionBackColor or SelectionForeColor may not contrast well with the control's fill.</td><td>Adjust selection colors to ensure clear visibility and contrast.</td></tr><tr><td>Incorrect selection range after editing</td><td>Programmatic selection methods may not update the caret position accurately.</td><td>Verify that methods such as Select() and Clear() are updating the selection state correctly.</td></tr><tr><td>Maximum text length exceeded</td><td>MaxLength may not be enforced or validated properly.</td><td>Set and validate the MaxLength property to prevent input overflow.</td></tr></tbody></table>

***

### Review

The table below provides a summary review of the Selection & Text Editing feature:

<table><thead><tr><th width="174">Aspect</th><th>Review Notes</th></tr></thead><tbody><tr><td>Flexibility</td><td>The control provides robust methods for text selection, clear editing operations, and content management.</td></tr><tr><td>Integration</td><td>Easy-to-use properties and methods allow seamless integration into various text-driven applications.</td></tr><tr><td>User Experience</td><td>Customizable selection styling and precise text editing enhance overall usability.</td></tr></tbody></table>

***

### Summary

The Selection & Text Editing feature of the SiticoneCardNumberBox control empowers developers to manage user input precisely. Through properties that allow you to define selection colors and height, and methods to programmatically select, clear, and manage text, this feature ensures that the control can be adapted to various text entry scenarios. Proper management of these aspects not only enhances the user experience but also provides developers with the flexibility needed for advanced text manipulation in their applications.

***

### Additional Integration Example

Below is a complete integration example demonstrating how to incorporate selection and text editing features into your WinForms application:

```csharp
public partial class TextEditingForm : Form
{
    public TextEditingForm()
    {
        InitializeComponent();
        InitializeTextEditingCardBox();
    }

    private void InitializeTextEditingCardBox()
    {
        // Create the SiticoneCardNumberBox control and set initial text
        SiticoneCardNumberBox cardNumberBox = new SiticoneCardNumberBox
        {
            Location = new Point(20, 20),
            Size = new Size(350, 60),
            Text = "4111 1111 1111 1111",
            MaxLength = 19, // Example: maximum allowed digits for a card number
            SelectionBackColor = Color.LightBlue,
            SelectionForeColor = Color.White,
            SelectionHeight = 22
        };

        // Programmatically select the first 4 digits when the control is loaded
        cardNumberBox.Select(0, 4);

        // Subscribe to a key event to show selection changes
        cardNumberBox.KeyUp += (sender, e) =>
        {
            // For demonstration, output the currently selected text to the console
            int start = Math.Min(cardNumberBox.SelectionStart, cardNumberBox.Text.Length);
            int length = Math.Min(cardNumberBox.SelectionLength, cardNumberBox.Text.Length - start);
            string selectedText = cardNumberBox.Text.Substring(start, length);
            Console.WriteLine("Selected text: " + selectedText);
        };

        // Add the control to the form
        this.Controls.Add(cardNumberBox);
    }
}
```

***

By following this documentation, developers can effectively leverage the Selection & Text Editing features of the SiticoneCardNumberBox control to implement intuitive and advanced text input behaviors. This flexibility allows for robust integration into various applications—from payment processing forms to custom text editors—ensuring that users enjoy a seamless and responsive editing experience.
