Windows Forms

Перемещение элементов ListBox мышью

В интернете достаточно много статей в которых описывается, как реализовать перемещение элементов списка ListBox с помощью кнопок «Переместить вверх» «Переместить вниз». Но примера реализации перемещения с помощью мыши я так и не нашел (быть может плохо искал :). Поэтому решил написать отдельную статью, возможно кому-то будет полезно.

Идею я реализовал с помощью функции Drag&Drop. Привожу сразу код.
Я прокомментировал основные моменты, поэтому, думаю, вопросов не должно возникнуть:
Прочитать остальную часть записи »

Пишем свой ListBox

Платформа .NET Framework предлагает достаточно большой выбор элементов управления. Но иногда разработчику бывает недостаточно предлагаемого набора. Благо, .NET позволяет перенастраивать элементы под себя. Этим мы и займёмся сейчас. Создадим свой ListBox, элементы которого будут в виде кнопок.

Приступим.
Создадим в Visual Studio новое Windows Forms приложение. После этого в дерево проектов добавляем файл с классом ButtonListBox:

Прочитать остальную часть записи »

Использование пользовательского курсора при Drag&Drop

Применяя функцию перетаскивания Drag&Drop студия использует курсоры по умолчанию, которые не всегда подходят разработчику. В данной статье я хочу показать, как можно использовать свой курсор. Паралельно, мы кратко рассмотрим саму реализацию механизма Drag&Drop. Чтобы Drop кнопки производить с учетом координат нажатия на ней в момент перетаскивания, координаты точки нажатия можно сохранить в свойстве Tag кнопки, которое затем прочитать в обработчике события DragDrop и соответсвующим образом подкорректировать новые координаты кнопки.
Прочитать остальную часть записи »

Перемещение кнопки по форме

В созданном приложении мы реализуем возможность перемещать кнопку по форме при нажатии на нее мышью. Для этого нам нужно будет переопределить события: OnMouseDown, OnMouseUp и OnMouseMove которые и будут отслеживать захват кнопки мышью и её перемещение.

Создадим приложение WindowsFormsApplication и добавим в проект новый класс. Назовем его MyButton. Унаследуем наш класс от System.Windows.Forms.Button что даст нам все свойства и методы обычной кнопки. Теперь переопределим необходимые события:

Прочитать остальную часть записи »

Сохранение настроек приложения

Начиная с версии 2.0 .NET Framework позволяет очень легко создавать, сохранять и загружать настройеи приложения. Довольно часто возникает необходимость в сохранении фонового цвета программы, размеров окна, размеров шрифта чтобы при следующем запуске программы, она сама восстанавливала эти настройки.

Прочитать остальную часть записи »

Запуск из программы другого приложения

Для того, чтобы из приложения написанного на c# запустить другое приложение, необходимо использовать класс Process пространства имен System.Diagnostics

using System.Diagnostics;
//создаем новый процесс
Process proc = new Process();
//Запускаем Блокнто
proc.StartInfo.FileName = @"Notepad.exe";
proc.StartInfo.Arguments="";
proc.Start();

Прочитать остальную часть записи »

Счетчик производительности процессора

Чтобы создать приложение, которое будет отслеживать загрузку процессора и количество доступной оперативной памяти требуется всего несколько минут. Разработчики .NET Framework действительно постарались и включили замечательный компонент производительности Windows NT – PerfomanceCounter (продребнее здесь).
Прочитать остальную часть записи »

Западающая кнопка

Многие даже не подозревают, как в принципе и я раньше не подозревал, что элемент CheckBox может выглядеть как западающая кнопка. Для того, чтобы CheckBox принял форму западающей кнопки, необходимо свойству Appearence установить значение Button (рис. 1)

 


Прочитать остальную часть записи »

Кнопка произвольной формы

С помощью свойства Region можно сделать кнопку любой формы. У нас нет необходимости создавать элементы управления, мы можем испольовать уже готовые. Давайте создадим метод, который будет делать кнопку овальной формы.
Поместим на нашу форму обычную кнопку (рис. 1)


Прочитать остальную часть записи »

Избавление от звукового сигнала при нажатии на клавишу Enter

Когда вы нажимаете на клавишу Enter в то время, когда курсор находится в текстовом поле, то издается неприятный звук из динамиков. Чтобы избавится от него необходимо перехватить событие нажатия клавиш:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
   if(e.KeyChar == (char)Keys.Enter)
      e.Handled = true;
   else
      base.OnKeyPressed(e);
}

В листинге выше показан пример для отдельного текстового поля. Если вы хотите применить этот способ ко многим текстовым полям, то проще определить новый класс с наследованием от TextBox и переопределить событие OnKeyPress:

public class TextBoxEx : TextBox
{
   private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
   {
      if(e.KeyChar == (char)Keys.Enter)
         e.Handled = true;
      else
      base.OnKeyPressed(e);
   }
}