Сайт разработчика Александр Климова

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Элементы управления

CheckBox
ListView
MessageBox
TexbBox
TreeView
Разное

CheckBox

Как запретить пользователю отмечать более двух флажков

Предположим, у вас имеется пять флажков, но вы хотите, чтобы пользователь мог отметить только два флажка в любой комбинации. Для этого нужно написать код для обработчика события CheckedChanged, который должен быть связан со всеми флажками. Когда пользователь ставит или убирает флажок, то обработчик события обновляет список выбранных флажков. Если CheckBox выбран, то мы добавляем его в список. Если число выбранных флажков превышает число дозволенных флажков, то программа снимает флажок у самого первого выбранного элемента. Если флажок снимается пользователем, то обработчик события удаляет его из списка.


// Число разрешенных выбранных флажков
private int NumAllowedOptions = 2;

// Список отмеченных флажков
private List<CheckBox> Selections = new List<CheckBox>();

// Проверяем, что число выбранных флажков не превышает разрешенное количество
private void chkOption_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = sender as CheckBox;
    if (chk.Checked)
    {
        // Добавляем в список
        Selections.Add(chk);

        // Проверка на превышение
        if (Selections.Count > NumAllowedOptions)
        {
            // Удаляем самый первый флажок из списка
            Selections[0].Checked = false;
        }
    }
    else
    {
        // Удаляем первое вхождение
        Selections.Remove(chk);
    }
}

Источник: Allow the user to select a limited number of CheckBoxes in C#

Настроить ширину столбцов у ListView

Вы можете автоматически подгонять ширину заголовка столбца ListView в режиме Details. Если вам необходимо установить ширину по самому длинному элементу в столбце, то установите значение свойства ColumnHeader.Width равным -1. Если нужно установить ширину заголовка по слову в самом заголовке, то используйте значение -2. Это справедливо и для .NET Compact Framework.


ColumnHeader header;
header.Width = -1;

Кнопка по умолчанию в MessageBox

Если в MessageBox вы выводите две или три кнопки, то не всегда требуется, чтобы кнопкой по умолчанию была первая кнопка, например, с надписью Да. Если вы хотите, чтобы фокус был на второй кнопке (напр. с надписью Нет), то используйте одну из перегруженных версий метода Show, в которой используется параметр MessageBoxDefaultButton, позволяющая задать кнопку по умолчанию.


MessageBox.Show("Ты согласен?", 
    "Вопрос", 
    MessageBoxButtons.YesNoCancel, 
    MessageBoxIcon.Question, 
    MessageBoxDefaultButton.Button2);

Как сделать TextBox, позволяющий вводить только цифры?

Существует много различных способов, позволяющих решить эту задачу. В книге C#. Советы программистам приводятся несколько подобных примеров. Вот еще один пример

Картинки для TreeView

Если вам приходилось раньше использовать элемент TreeView в своих проектах, то, наверняка, задавались вопросом - как использовать вместо плюсиков-минусов привычные картинки открытой или закрытой папки как в Проводнике или использовать свои собственные картинки. Для решения этой проблемы нужно было использовать системное сообщение Windows TVM_SETIMAGELIST. Готовый пример можно посмотреть например на странице FAQ от GotDotNet. Но, начиная с .NET Framework 2.0 у элемента TreeView есть свойства ImageIndex и SelectedImageIndex, которые в сочетании с элементом ImageList, помогут вам обеспечить необходимую функциональность. Пересмотрите свои старые примеры и внесите необходимые изменения.

Разное

Индикатор прогресса как у Firefox

Интересный пример создания индикатора прогресса на CodeProject, наподобие того, как это сделано в Firefox. Настраиваются цвет и размер кружочков, а также скорость анимации. Скачать пример (с моего сайта)

Реклама

Продажа седельных тягачей бу смотрите на http://2273130.ru .