/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
CheckBox
ListView
MessageBox
TexbBox
TreeView
Разное
Предположим, у вас имеется пять флажков, но вы хотите, чтобы пользователь мог отметить только два флажка в любой комбинации. Для этого нужно написать код для обработчика события 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# (CSHelper)
Вы можете автоматически подгонять ширину заголовка столбца ListView в режиме Details. Если вам необходимо установить ширину по самому длинному элементу в столбце, то установите значение свойства ColumnHeader.Width равным -1. Если нужно установить ширину заголовка по слову в самом заголовке, то используйте значение -2. Это справедливо и для .NET Compact Framework.
ColumnHeader header;
header.Width = -1;
Если в MessageBox вы выводите две или три кнопки, то не всегда требуется, чтобы кнопкой по умолчанию была первая кнопка, например, с надписью Да. Если вы хотите, чтобы фокус был на второй кнопке (напр. с надписью Нет), то используйте одну из перегруженных версий метода Show, в которой используется параметр MessageBoxDefaultButton, позволяющая задать кнопку по умолчанию.
MessageBox.Show("Ты согласен?",
"Вопрос",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2);
Существует много различных способов, позволяющих решить эту задачу. В книге C#. Советы программистам приводятся несколько подобных примеров. Вот еще один пример
Если вам приходилось раньше использовать элемент TreeView в своих проектах, то, наверняка, задавались вопросом - как использовать вместо плюсиков-минусов привычные картинки открытой или закрытой папки как в Проводнике или использовать свои собственные картинки. Для решения этой проблемы нужно было использовать системное сообщение Windows TVM_SETIMAGELIST. Готовый пример можно посмотреть например на странице FAQ от GotDotNet. Но, начиная с .NET Framework 2.0 у элемента TreeView есть свойства ImageIndex и SelectedImageIndex, которые в сочетании с элементом ImageList, помогут вам обеспечить необходимую функциональность. Пересмотрите свои старые примеры и внесите необходимые изменения.
Интересный пример создания индикатора прогресса на