Как сделать кнопки панели инструментов похожими на переключатели в C#

Иногда бывает полезно сделать кнопки панели инструментов, как радиокнопки, чтобы пользователь мог выбрать только один из набора кнопок. В этом примере вы можете выбрать один из инструментов формы или выбрать (кнопка со стрелкой) и одну из цветных кнопок.

Программа использует массивы для отслеживания кнопок панели инструментов, которые должны действовать как эксклюзивные группы. Следующий код показывает, как программа объявляет и инициализирует массивы.

// Массивы эксклюзивных инструментов.
private ToolStripButton[] ShapeTools, ColorTools;

// Инициализация эксклюзивных массивов инструментов.
private void Form1_Load(object sender, EventArgs e)
{
    // Подготовьте инструменты формы.
    ShapeTools = new ToolStripButton[]
    {
        toolArrow,
        toolPolygon,
        toolCircle,
        toolDiamond
    };
    foreach (ToolStripButton btn in ShapeTools)
    {
        btn.Click += toolShape_Click;
    }

    // Подготовьте инструменты цвета.
    ColorTools = new ToolStripButton[]
    {
        toolRed,
        toolBlue,
        toolYellow,
        toolLime
    };
    foreach (ToolStripButton btn in ColorTools)
    {
        btn.Click += toolColor_Click;
    }
}

Сначала код объявляет массивы для групп инструментов формы и цвета. Обработчик события Load формы инициализирует массив ShapeTools . Затем он проходит через массив, регистрирующий обработчик события toolShape_Click. Затем код повторяет эти шаги для инструментов цвета.

В следующем коде показаны обработчики событий toolShape_Click и toolColor_Click .

// Разрешить только один выбор формы за раз. 
private void toolShape_Click(object sender, EventArgs e)
{
    SelectToolStripButton(sender as ToolStripButton, ShapeTools);
}

// Разрешить только один выбор цвета за раз. 
private void toolColor_Click(object sender, EventArgs e)
{
    SelectToolStripButton(sender as ToolStripButton, ColorTools);
}

Эти обработчики событий просто вызывают метод SelectToolStripButton , передавая ему кнопку инструментальной панели, которая была нажата, и массив кнопок в своей группе. Следующий код показывает метод SelectToolStripButton , который выполняет всю интересную работу.

// Выберите указанную кнопку и отмените выбор остальных.
private void SelectToolStripButton(ToolStripButton selected_button,
    ToolStripButton[] buttons)
{
    foreach (ToolStripButton test_button in buttons)
    {
        test_button.Checked = (test_button == selected_button);
    }
}

Этот метод проходит через кнопки панели инструментов в эксклюзивной группе. Для каждой кнопки он устанавливает свойство Checked на true, если это кнопка, которая должна быть выбрана. Он задает свойство Checked кнопки false, если оно не должно быть выбрано. Вот и все.

Обратите внимание, что программа устанавливает кнопки инструментальной панели « Проверенные обработчики событий во время выполнения в обработчике событий загрузки формы» . Это позволяет использовать конструктор форм для назначения другого обработчика события Click для каждой кнопки, как обычно, и кнопки будут поднять оба обработчика событий при нажатии. В этом примере все кнопки используют следующий обработчик события Click, назначенный во время разработки.

private void tool_Click(object sender, EventArgs e)
{
    ToolStripButton btn = sender as ToolStripButton;
    Console.WriteLine(btn.Text);
}

Этот обработчик событий просто отображает текст кнопки в окне консоли. Предположительно, в реальном приложении кнопки будут делать что-то более полезное.

Источник: csharphelper.com/blog/2014/08/make-toolstrip-buttons-act-like-radio-buttons-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector