C#

Основные свойства объекта Form

Свойство
Описание
NameИмя объекта. По умолчанию - Form1. В программе по имени осуществляется доступ к свойствам объекта. Имя можно изменять. Так же как и для имён переменных, имя объекта должно начинаться с латинской буквы. Дальше могут следовать как буквы, так и цифры. Например: MainForm; Form_2115; F10head.
BackColorЦвет заливки (фон) объекта.
CursorВид курсора мыши отображаемого на фоне окна.
FontСвойство Font задаёт тип шрифта - имя, размер, начертание. Шрифт, заданный в форме, переходит на остальные объекты, расположенные на форме (наследование).
ForeColorЦвет отображения (текста) на элементах (визуальных объектах) формы.
FormBorderStyleТип бордюра (рамки) формы: Sizable - (по умолчанию) размер формы можно изменять в процессе выполнения программы; None - форма не имеет бордюра, строки заголовка и системных кнопок; FixedSingle - бордюр одинарный, размер формы изменять нельзя; Fixed3D - то же, что и FixedSingle, но бордюр объёмный; FixedDialog - то же, что и FixedSingle и предназначена для конструирования диалоговых панелей - не имеет системной кнопки в строке заголовка; FixedToolWindow - окно для изготовления инструментальных панелей, имеет только одну системную кнопку "Закрыть"; SizableToolWindow - то же, что и FixedToolWindow, но размер окна можно изменять.
IconРисунок (иконка в формате ico) появляющийся в строке заголовка формы.
OpacityНепрозрачность. Уменьшение процентного показателя ведёт к появлению эффекта прозрачности формы вместе с её содержимым.
SizeРазмер окна (в пикселях) - ширина; высота.
StartPositionПоложение окна при запуске программы: WindowDefaultLocation - окно на экране в позиции по умолчанию; CenterScreen - окно в центре экрана.
WindowStateПоведение окна при запуске: normal - нормальное отображение; Minimized - окно минимизировано на панель инструментов Windows; Maximized - окно развёрнуто на весь экран.

Первое консольное приложение

static void Main(string[] args)
        {
            Console.WriteLine("Моё консольное приложение");
            // Чтобы окно не свернулось, следует написать Console.ReadKey()
            Console.ReadKey();
        }

Простой блокнот

Размещаем в форме RichTextBox и MenuStrip

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Notepad
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void новыйToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Clear();
        }

        private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            op.Title = "open";
            op.Filter = "Text DOcument(*.txt)|*.txt|All Files(*.*)|*.*";
            if (op.ShowDialog() == DialogResult.OK)
                richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText);
            this.Text = op.FileName;
        }

        private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog op = new SaveFileDialog();
            op.Title = "Save";
            op.Filter = "Text DOcument(*.txt)|*.txt|All Files(*.*)|*.*";
            if (op.ShowDialog() == DialogResult.OK)
                richTextBox1.SaveFile(op.FileName, RichTextBoxStreamType.PlainText);
            this.Text = op.FileName;
        }

        private void выйтиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void отменитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Undo();
        }

        private void повторитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Redo();
        }

        private void копироватьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Copy();
        }

        private void вставитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Paste();
        }

        private void вырезатьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Cut();
        }

        private void выделитьВсёToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.SelectAll();
        }

        private void датаВремяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = System.DateTime.Now.ToString();
        }

        private void шрифтToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FontDialog op = new FontDialog();
            if (op.ShowDialog() == DialogResult.OK)
                richTextBox1.Font = op.Font;
        }

        private void цветToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ColorDialog op = new ColorDialog();
            if (op.ShowDialog() == DialogResult.OK)
                richTextBox1.ForeColor = op.Color;
        }
    }
}

Для вставки даты следует использовать SelectedText, а не Text т.е. по месту расположения курсора, Например:

richTextBox1.SelectedText = DateTime.Now.ToString();

Жирный текст

private void btnBold_Click(object sender, EventArgs e)
        {
            Font oldFont, newFont;

            oldFont = this.rtfText.SelectionFont;
            if (oldFont.Bold == true)
                // если уже жирный то убираем выделение
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
            else newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold); // выделяем жирным

            this.rtfText.SelectionFont = newFont;
            this.rtfText.Focus();
        }

Наклонный текст

private void btnItalic_Click(object sender, EventArgs e)
        {
            Font oldFont, newFont;

            oldFont = this.rtfText.SelectionFont;
            if (oldFont.Italic == true)
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
            else newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);

            this.rtfText.SelectionFont = newFont;
            this.rtfText.Focus();
        }

Подчёркнутый текст

private void btnUnderline_Click(object sender, EventArgs e)
        {
            Font oldFont, newFont;

            oldFont = this.rtfText.SelectionFont;
            if (oldFont.Underline == true)
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);
            else newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);

            this.rtfText.SelectionFont = newFont;
            this.rtfText.Focus();
        }

Текст по центру

private void btnCenter_Click(object sender, EventArgs e)
        {
            if (this.rtfText.SelectionAlignment == HorizontalAlignment.Center)
                this.rtfText.SelectionAlignment = HorizontalAlignment.Left;
            else this.rtfText.SelectionAlignment = HorizontalAlignment.Center;
            this.rtfText.Focus();
        }

Простой просмотрщик/конвертер изображений

Размещаем в форме MenuStrip с пунктами: Файл, Открыть, Сохранить как, Выйти и PictureBox.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ImageViewer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "jpg (*.jpg)|*.jpg|bmp (*.bmp)|*.bmp|png (*.png)|*.png|gif (*.gif)|*.gif";

            if (ofd.ShowDialog() == DialogResult.OK && ofd.FileName.Length > 0)
            {
                pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                pictureBox1.Image = Image.FromFile(ofd.FileName);
            }
        }

        private void сохранитьКакToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "jpg (*.jpg)|*.jpg|bmp (*.bmp)|*.bmp|png (*.png)|*.png|gif (*.gif)|*.gif";

            if (sfd.ShowDialog() == DialogResult.OK && sfd.FileName.Length > 0)
            {
                pictureBox1.Image.Save(sfd.FileName);
            }
        }

        private void выйтиToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

Чтобы сделать форму поверх всех окон, установите свойство формы TopMost = True.

TopMost = true;

Пример с чекбоксом:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            TopMost = true;
        }

Пример для формы:

public Form1()
        {
            TopMost = true;
            InitializeComponent();
        }

Копировать в буфер обмена

Clipboard.SetText(textBox2.Text);

Вызов второй формы (NonModalForm)

NonModalForm childForm = new NonModalForm();
            childForm.Show();

Смена регистра

Смена регистра
Метод String.ToUpper переводит все символы в строке в верхний регистр. В следующем примере смешанный регистр строки "Hello World!" изменяется на верхний:

string properString = "Hello World!";
Console.WriteLine(properString.ToUpper());
// Этот пример показывает следующий вывод: 
// HELLO WORLD!

Метод String.ToLower похож на предыдущий метод, но преобразует регистр всех знаков в строке в нижний. В следующем примере регистр строки "Hello World!" заменяется на нижний:

// Этот пример показывает следующий вывод: 
// hello world!

Таймер

MessageBox.Show("Сообщение 1");
System.Threading.Thread.Sleep(2000);
MessageBox.Show("Сообщение 2 с интервалом в 2 сек.");

Чтение и запись в файл (сохранение)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        string[] str;
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                str = File.ReadAllLines("test.txt");
                textBox1.Text = str[0];
                textBox2.Text = str[1];
 
            }
            catch (Exception)
            { }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            StreamWriter sw = new StreamWriter("test.txt");
            sw.WriteLine(textBox1.Text);
            sw.WriteLine(textBox2.Text);
            sw.Close();
        }
    }
}

Очистить поля во всех TextBox

foreach (Control c in this.Controls)
            {
                if(c.GetType() == typeof(TextBox))
                    c.Text = "";
            }

MessageBox

MessageBox.Show("Название \nCopyright © Автор", "Заголовок", MessageBoxButtons.OK, MessageBoxIcon.Information);

или так:

string caption = "Заголовок окна";
string message = "Текст";
DialogResult result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
 
if (result == DialogResult.No)
{
    return;
}

Плавное закрытие формы

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            for (; Opacity > 0; Opacity -= .01, System.Threading.Thread.Sleep(10)) ;
        }

Свойство CharacterCasing

// Только прописные
textBox1.CharacterCasing = CharacterCasing.Lower;

Деактивировать поле

textBox1.Enabled = false;
// можно выделять, копировать, перемещать курсор:
textBox1.ReadOnly = true;

Подсказки в StatusStrip при наведении на элементы

На форме размещаем StatusStrip и выбираем StatusLabel.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace tooltips
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // Очищаем toolStripStatusLabel1 (или просто убрать текст)
            toolStripStatusLabel1.Text = String.Empty;
        }
        // В свойствах toolStripStatusLabel1 SizingGrip ставим False для того, чтобы убрать уголок
        private void textBox1_MouseEnter(object sender, EventArgs e)
        {
            // При наведении
                toolStripStatusLabel1.Text = "Подсказка";
        }

        private void textBox1_MouseLeave(object sender, EventArgs e)
        {
            // Очищаем при отведении
                toolStripStatusLabel1.Text = String.Empty;
            // или
            // toolStripStatusLabel1.Text = "";
        }
    }
}

Anchor (Перечисления)

button1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);

Font

textBox1.Font = new Font ("Giorgia", 11, FontStyle.Italic);

Size

textBox1.Size = new Size(261, 112);

Multiline

textBox1.Multiline = true;

MaximizeBox и FormBorderStyle

private void Form1_Load(object sender, EventArgs e)
        {
            this.MaximizeBox = false;
            this.FormBorderStyle = FormBorderStyle.FixedSingle; 
        }

Неактивный элемент

btn.Enabled = false;

Убрать рамку у кнопки

button1.FlatAppearance.BorderSize = 0;	
button1.FlatStyle = FlatStyle.Flat;

Или так:

button1.FlatStyle = FlatStyle.Flat;
button1.FlatAppearance.MouseDownBackColor = SystemColors.Control;
button1.FlatAppearance.MouseOverBackColor = SystemColors.Control;
button1.FlatAppearance.BorderColor = SystemColors.Control;

Или, если используется Button, в свойствах FlatStyle = Flat, затем FlatAppearance → BorderSize = 0.

Изменить программно курсор

button1.Cursor = System.Windows.Forms.Cursors.Hand;

Открыть изображение

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.FileStream fs = new System.IO.FileStream(openFileDialog1.FileName, System.IO.FileMode.Open);
System.Drawing.Image img = System.Drawing.Image.FromStream(fs);
fs.Close();
pictureBox1.Image = img;
}

Прозрачный фон формы

this.FormBorderStyle = FormBorderStyle.None;  
this.AllowTransparency = true;  
this.BackColor = Color.AliceBlue;//цвет фона  
this.TransparencyKey = this.BackColor;//он же будет заменен на прозрачный цвет

То же самое можно сделать и из конструктора

Фоновое изображение программно

this.BackgroundImage = Image.FromFile("123.png");//фон

Padding у textBox

Чтобы установить padding у textBox, можно сначала на форме разместить panel одного цвета с textBox, а затем на panel разместить textBox с нужным отступом.

Вариант второй:

Сделайте границу RichTextBox'а невидимой:

richTextBox1.BorderStyle = BorderStyle.None;

и создайте рамку вокруг него, которая будет немного шире, что будет выглядеть как отступ:

panel1.Margin = new Padding(10, 0, 0, 0);  // отступ слева в 10px
panel1.BorderStyle = BorderStyle.FixedSingle;

Перемещение формы мышкой, если FormBorderStyle = None

using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication53
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.FormBorderStyle = FormBorderStyle.None;
            this.MouseDown += new MouseEventHandler(Form1_MouseDown);
        }
 
        void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            base.Capture = false;
            Message m = Message.Create(base.Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
            this.WndProc(ref m);
        }
    }
}

Или так:

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication61
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Panel panel = new Panel();
            panel.BackColor = Color.Red;
            panel.Size = new Size(50, 50);
            this.Controls.Add(panel);
            panel.MouseDown += new MouseEventHandler(panel_MouseDown);
        }
 
        void panel_MouseDown(object sender, MouseEventArgs e)
        {
            Panel panel = sender as Panel;
            panel.Capture = false;
            Message m = Message.Create(panel.Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
            this.WndProc(ref m);
        }
    }
}

Или так:

using System.Runtime.InteropServices;
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [DllImport("user32", CharSet = CharSet.Auto)]
        internal extern static bool PostMessage(IntPtr hWnd, uint Msg, uint WParam, uint LParam);
 
        [DllImport("user32", CharSet = CharSet.Auto)]
        internal extern static bool ReleaseCapture();
 
        const uint WM_SYSCOMMAND = 0x0112;
        const uint DOMOVE = 0xF012;
        const uint DOSIZE = 0xF008;
 
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {           
            ReleaseCapture();
            PostMessage(panel1.Handle, WM_SYSCOMMAND, DOMOVE, 0); 
        }

Или так:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication53
{
    public partial class Form1 : Form
    {
        [DllImport("user32", CharSet = CharSet.Auto)]
        internal extern static bool PostMessage(IntPtr hWnd, uint Msg, uint WParam, uint LParam);
 
        [DllImport("user32", CharSet = CharSet.Auto)]
        internal extern static bool ReleaseCapture();
 
        const uint WM_SYSCOMMAND = 0x0112;
        const uint DOMOVE = 0xF012;
        const uint DOSIZE = 0xF008;
 
        public Form1()
        {
            InitializeComponent();
            this.FormBorderStyle = FormBorderStyle.None;
            this.MouseDown += new MouseEventHandler(Form1_MouseDown);
        }
 
        void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            ReleaseCapture();
            PostMessage(this.Handle, WM_SYSCOMMAND, DOMOVE, 0);
        }
    }
}

Или так:

public partial class Form1 : Form
{
    //Координаты мышки
    private int x = 0; private int y = 0;
 
    // Нажатие кнопки мышки
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        x = e.X; y = e.Y;
    }
    // Движение мышки
    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            this.Location = new System.Drawing.Point(this.Location.X + (e.X - x), this.Location.Y + (e.Y - y));
 
        }
    }
 }

Или так:

private void TestForms_MouseDown(object sender, MouseEventArgs e)
        {
            mouse_offset = new Point(-e.X, -e.Y);
        }

        private void TestForms_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouse_offset.X, mouse_offset.Y); 
                Location = mousePos;
            }
        }

Поиск в richbox

private void button2_Click(object sender, EventArgs e)
        {
            string str = richTextBox1.Text;
 
            if (String.IsNullOrEmpty(str) || String.IsNullOrEmpty(textBox1.Text))
            {
                MessageBox.Show("Введите что-нибудь!");
            }
            else
            {
                if (str.IndexOf(textBox1.Text) != -1)
                {
                    MessageBox.Show("Найдено!");
                }
                else
                {
                    MessageBox.Show("Не обнаружено!");
                }
            }
        }

Поиск в ListBox (без учёта регистра)

private void button1_Click(object sender, EventArgs e)
        {
            listBox1.SelectedItems.Clear();
            for (int i = listBox1.Items.Count -1; i >= 0;i-- )
            {
                if (listBox1.Items[i].ToString().ToLower().Contains(txt_search.Text.ToLower()))
                {
                    listBox1.SetSelected(i, true);
                }
                label_status.Text = listBox1.SelectedItems.Count.ToString() + " элементов найдено";
            }
        }

Для множественного поиска в свойствах listBox выбрать SelectionMode → MultiSimple

Поиск и выделение

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            int index = 0;
            string temp = richTextBox1.Text;
            richTextBox1.Text = "";
            richTextBox1.Text = temp;

            while (index < richTextBox1.Text.LastIndexOf(textBox1.Text))
            {
                // Searches the text in a RichTextBox control for a string within a range of text withing the control and with specific options applied to the search.
                richTextBox1.Find(textBox1.Text, index, richTextBox1.TextLength, RichTextBoxFinds.None);
                // Selection Color. This is added automatically when a match is found.
                richTextBox1.SelectionBackColor = Color.Yellow;
                // After a match is found the index is increased so the search won't stop at the same match again. This makes possible to highlight same words at the same time.
                index = richTextBox1.Text.IndexOf(textBox1.Text, index) + 1;
            }

        }

Запрет первого пробела

if (txtValue.Text.Length == 0)
    e.Handled = e.KeyChar == ' ';

Минимизировать

this.WindowState = FormWindowState.Minimized;

Запуск внешних программ

// run notepad
System.Diagnostics.Process.Start("notepad.exe");

//run calculator
System.Diagnostics.Process.Start("calc.exe");

Если были изменения в richTextBox1 - спросить что делать при попытке закрытия формы

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (richTextBox1.Modified == false) return;
            //Если текст модифицирован, спросить записать ли файл.
            DialogResult MBox = MessageBox.Show(
                "Текст был изменён. \nСохранить изменения?",
                "Редактор", MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Exclamation);
            //Yes - диалог; No - выход; Cancel - редактировать
            if (MBox == DialogResult.No) return;
            if (MBox == DialogResult.Cancel) e.Cancel = true;
            if (MBox == DialogResult.Yes)
            {
                if (richTextBox1.TextLength > 0)
                {
                    File.WriteAllText(fileName, richTextBox1.Text);
                }
                else e.Cancel = true;
            }
        }

Escape в Menustrip

menuStripItem.ShortcutKeyDisplayString = "ESC";

Как сделать, чтобы textbox раскрывался вместе с формой

Поместить на форму панель, закрепить её в родительском контейнере, пометить на панель textbox. Форме задать SizeChanget  и написать следующий код:

textBox1.Width = panel1.Width;
textBox1.Height = panel1.Height;

Сохранение файла в Мои документы

SaveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
SaveFileDialog.RestoreDirectory = true;

Постепенное появление формы

  • Задать форме Opacity: 0%.
  • Добавить Timer и задать Interval: 30.
public Form1()
        {
            InitializeComponent();
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            this.Opacity += .05;
            if(this.Opacity == 1)
            {
                timer1.Stop();
            }
        }

Использование метода Compare()

private void Form1_Load(object sender, EventArgs e)
        {
            string str1 = "один";
            string str2 = "один";
            string str3 = "ОДИН";
            string str4 = "два";
            string str5 = "один, два";
            if (String.Compare(str1, str2) == 0)
                label1.Text = (str1 + " и " + str2 + " равны.");
            else
                label1.Text = (str1 + " и " + str2 + " не равны.");
            if (String.Compare(str1, str3) == 0)
                label2.Text = (str1 + " и " + str3 + " равны.");
            else
                label2.Text = (str1 + " и " + str3 + " не равны.");
            if (String.Compare(str1, str3, true) == 0)
                label3.Text = (str1 + " и " + str3 +
                       " равны без учета регистра.");
            else
                label3.Text = (str1 + " и " + str3 +
                       " не равны без учета регистра.");
            if (String.Compare(str1, str5) == 0)
                label4.Text = (str1 + " и " + str5 + " равны.");
            else
                label4.Text = (str1 + " и " + str5 + " не равны.");
            if (String.Compare(str1, 0, str5, 0, 3) == 0)
                label5.Text = ("Первая часть строки " + str1 + " и " +
                       str5 + " равны.");
            else
                label5.Text = ("Первая часть строки " + str1 + " и " +
                       str5 + " не равны.");
            int result = String.Compare(str1, str4);
            if (result < 0)
                label6.Text = (str1 + " меньше " + str4);
            else if (result > 0)
                label6.Text = (str1 + " больше " + str4);
            else
                label6.Text = (str1 + " равно " + str4);
        }
if ((String.Compare(textBox1.Text, "ЕЛЕНА", true) == 0) && (String.Compare(textBox2.Text, "СИДЕЛЬНИКОВА", true) == 0))
                {
                    Form fm = new Form2();
                    fm.ShowDialog();
                }

Свойство ListBox.SelectedItem

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
   // Get the currently selected item in the ListBox.
   string curItem = listBox1.SelectedItem.ToString();

   // Find the string in ListBox2.
   int index = listBox2.FindString(curItem);
   // If the item was not found in ListBox 2 display a message box, otherwise select it in ListBox2.
   if(index == -1)
      MessageBox.Show("Item is not available in ListBox2");
   else
      listBox2.SetSelected(index,true);
}

Сохранение настроек - положение окна, размер окна, максимизировать

В настройках:

  • Name: F1State | Type: System.Windows.Forms.FormWindowState | Value: Normal
  • Name: F1Location | Type: System.Drawing.Point | Value: 0;0
  • Name: F1Size | Type: System.Drawing.Size | Value: 0;0
private void Form1_Load(object sender, EventArgs e)
        {
            this.WindowState = Properties.Settings.Default.F1State;
            this.Location = Properties.Settings.Default.F1Location;
            this.Size = Properties.Settings.Default.F1Size;

            if (Properties.Settings.Default.F1Size.Width == 0 || Properties.Settings.Default.F1Size.Height == 0)
            {
                // first start
                // optional: add default values
            }
            else
            {
                this.WindowState = Properties.Settings.Default.F1State;

                // we don't want a minimized window at startup
                if (this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal;

                this.Location = Properties.Settings.Default.F1Location;
                this.Size = Properties.Settings.Default.F1Size;
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.F1State = this.WindowState;
            if (this.WindowState == FormWindowState.Normal)
            {
                // save location and size if the state is normal
                Properties.Settings.Default.F1Location = this.Location;
                Properties.Settings.Default.F1Size = this.Size;
            }
            else
            {
                // save the RestoreBounds if the form is minimized or maximized!
                Properties.Settings.Default.F1Location = this.RestoreBounds.Location;
                Properties.Settings.Default.F1Size = this.RestoreBounds.Size;
            }

            // don't forget to save the settings
            Properties.Settings.Default.Save();
        }

В реестре

using Microsoft.Win32;

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\WinRegistry");
            key.SetValue("Width", this.Width);
            key.SetValue("Height", this.Height);
            key.Close(); 
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\WinRegistry");
            if (key != null)
            {
                int width = int.Parse(key.GetValue("Width").ToString());
                int height = int.Parse(key.GetValue("Height").ToString());
                this.Size = new Size(width, height);
            }  
        }

Создание каталога и подкаталога

string path = @"C:\SomeDir";
string subpath = @"program\avalon";
DirectoryInfo dirInfo = new DirectoryInfo(path);
if (!dirInfo.Exists)
{
    dirInfo.Create();
}
dirInfo.CreateSubdirectory(subpath);

Удаление каталога

string dirName = @"C:\SomeDir";

            try
            {
                DirectoryInfo dirInfo = new DirectoryInfo(dirName);
                dirInfo.Delete(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

или так:

string dirName = @"C:\SomeDir";
            Directory.Delete(dirName, true);

Копировать файл

string path = @"C:\apache\hta.txt";
string newPath = @"C:\SomeDir\hta.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
   fileInf.CopyTo(newPath, true);      
   // альтернатива с помощью класса File
   // File.Copy(path, newPath, true);
}

Копировать файл на рабочий стол

string path = @"C:\sample.txt";
            //string newPath = @"C:\SomeDir\sample.txt";
            string newPath = (Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\sample.txt");

            FileInfo fileInf = new FileInfo(path);
            if (fileInf.Exists)
            {
                fileInf.CopyTo(newPath, true);
                // альтернатива с помощью класса File
                // File.Copy(path, newPath, true);
            }

Копировать файл на рабочий стол из директории программы

//string path = @"C:\sample.txt";
            //string newPath = @"C:\SomeDir\sample.txt";
            string path = ((AppDomain.CurrentDomain.BaseDirectory) + @"\sample.txt");
            string newPath = (Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\sample.txt");

            FileInfo fileInf = new FileInfo(path);
            if (fileInf.Exists)
            {
                fileInf.CopyTo(newPath, true);
                // альтернатива с помощью класса File
                // File.Copy(path, newPath, true);
            }
string path = @"C:\apache\hta.txt";
string newPath = @"C:\SomeDir\hta.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
   fileInf.MoveTo(newPath);       
   // альтернатива с помощью класса File
   // File.Move(path, newPath);
}

Переместить файл

Удалить файл

string path = @"C:\apache\hta.txt";
FileInfo fileInf = new FileInfo(path);
if (fileInf.Exists)
{
   fileInf.Delete();
   // альтернатива с помощью класса File
   // File.Delete(path);
}

Открыть директорию программы

OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
dialog.ShowDialog();

Копировать в директорию программы через OpenFileDialog

OpenFileDialog filedialog = new OpenFileDialog();
            filedialog.Filter = ("(*.wav)|*.*");
            if (filedialog.ShowDialog() == DialogResult.OK)
            {
                if (filedialog.OpenFile() != null)
                {
                    string fileName = filedialog.SafeFileName; //Получили имя файла
                    string sourcePath = filedialog.FileName; //Получили абсолютный путь
                    string targetPath = @"Music";
 
                    string destFile = System.IO.Path.Combine(targetPath, fileName); // \Music\<fileName>
                    System.IO.File.Copy(sourcePath, destFile, true); //Копируем выбранный в OpenFileDialog файл в корень программы, в папку Music
                }
            }

или в корень:

OpenFileDialog filedialog = new OpenFileDialog();
            filedialog.Filter = ("(*.wav)|*.*");
            if (filedialog.ShowDialog() == DialogResult.OK)
            {
                if (filedialog.OpenFile() != null)
                {
                    string fileName = filedialog.SafeFileName; //Получили имя файла
                    string sourcePath = filedialog.FileName; //Получили абсолютный путь
 
                    string destFile = System.IO.Path.Combine(fileName); // \Music\<fileName>
                    System.IO.File.Copy(sourcePath, destFile, true); //Копируем выбранный в OpenFileDialog файл в корень программы, в папку Music
                }
            }

C выводом в listBox и проверкой:
using System.Diagnostics;

OpenFileDialog filedialog = new OpenFileDialog();
            filedialog.Filter = ("(*.wav)|*.*");
            if (filedialog.ShowDialog() == DialogResult.OK)
            {
                string fileName = filedialog.SafeFileName;
                string sourcePath = filedialog.FileName;
                string targetPath = @"Music";

                listBox1.Items.Add("Копируемый файл: " + sourcePath); // Проверка путей

                if (!Directory.Exists(targetPath)) //Если папки нет...
                    Directory.CreateDirectory(targetPath); //...создадим ее

                string destFile = Path.Combine(targetPath, fileName);

                listBox1.Items.Add("Целевая папка: " + destFile);  // Проверка путей

                File.Copy(sourcePath, destFile, true);

                Process.Start(targetPath); // ...открываем папку Music
            }

Что-то вроде резервной копии

SaveFileDialog sfd = new SaveFileDialog();
            sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            sfd.RestoreDirectory = true;
            sfd.FileName = "sample";
            sfd.Filter = "Текстовой файл (*.txt)|*.txt";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                string path = ((AppDomain.CurrentDomain.BaseDirectory) + @"\sample.txt");
                string newPath = sfd.FileName;
                FileInfo fileInf = new FileInfo(path);
                if (fileInf.Exists)
                {
                    fileInf.CopyTo(newPath, true);
                }
                MessageBox.Show("Резервная копия создана успешно!");
            }

Поиск в Google

string searchString = "Turtle";
System.Diagnostics.Process.Start("www.google.com/search?q=" + searchString);

Обработчик для контекстного меню

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
            cut2.Enabled = copy2.Enabled = richTextBox1.SelectionLength > 0;
            paste2.Enabled =
                Clipboard.GetDataObject().GetDataPresent(typeof(string));
        }

Запустить .exe

using System.Diagnostics;

Process myProc = new Process();
myProc.StartInfo.FileName = "C:\\program.exe";
myProc.Start();

Сохранить настройки состояния чекбокса

Свойства проекта → Параметры:

ИмяТипОбласть
chBoxboolПользователь
private void Form1_Load(object sender, EventArgs e)
{
checkBox1.Checked = Properties.Settings.Default.chBox;
}


private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.chBox = checkBox1.Checked;
Properties.Settings.Default.Save();
}

Поверх всех окон:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            TopMost = true;
        }

А лучше так:

if(checkBox1.Checked == true)
            {
                this.TopMost = true;
            }
            else
            {
                this.TopMost = false;
            }

Примеры Switch

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (comboBox1.SelectedIndex)
            {
                case 0:
                    textBox1.Font = new Font("Arial", 8);
                    break;
                case 1:
                    textBox1.Font = new Font("Arial", 15);
                    break;
            }
        }
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            switch (textBox1.Text)
            {
                case "слово1":
                    textBox2.Text = "Значение1";
                    break;
                case "слово2":
                    textBox2.Text = "Значение2";
                    break;
                default:
                    textBox2.Text = "Слово не найдено!";
                    break;
            }
        }

Для приведения к нижнему регистру:

textBox1.CharacterCasing = CharacterCasing.Lower;

Вариант сохранения настроек размера шрифта с помощью comboBox

ИмяТипОбластьЗначение
FontSystem.Drawing.FontПользовательArial; 8,25pt
combstringПользователь
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (comboBox1.SelectedIndex)
            {
                case 0:
                    textBox1.Font = new Font("Arial", 8);
                    break;
                case 1:
                    textBox1.Font = new Font("Arial", 15);
                    break;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //comboBox1.Text = "8";
            textBox1.Font = Properties.Settings.Default.Font;
            comboBox1.Text = Properties.Settings.Default.comb;
            Properties.Settings.Default.Save();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.Font = textBox1.Font;
            Properties.Settings.Default.comb = comboBox1.Text;
            Properties.Settings.Default.Save();
        }

Вторая форма TopMost (формы независимы)

private void button1_Click(object sender, EventArgs e)
        {
            About topMostForm = new About();
            topMostForm.TopMost = true;
            topMostForm.Show();
        }

Вторая форма TopMost (формы зависимы)

private void button1_Click(object sender, EventArgs e)
        {
            About topMostForm = new About();
            topMostForm.TopMost = true;
            topMostForm.ShowDialog();
        }

Добавить пункт в MenuStrip с чекбоксом TopMost
В Form1.Designer.cs дописать к созданному пункту:

this.TopMostToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem() { Checked = false, CheckOnClick = true };
this.TopMostToolStripMenuItem.CheckedChanged += menuItem_CheckedChanged;

В Form1.cs:

void menuItem_CheckedChanged(object sender, EventArgs e)
        {
            ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
            if (menuItem.CheckState == CheckState.Checked)
                this.TopMost = true;
            else if (menuItem.CheckState == CheckState.Unchecked)
                this.TopMost = false;
        }

Если есть вторая форма, то её вызов:

private void button1_Click(object sender, EventArgs e)
        {
            //About ab = new About();
            //ab.ShowDialog();

            About topMostForm = new About();
            topMostForm.TopMost = true;
            topMostForm.ShowDialog();
        }

DataGridView сортировка

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"],ListSortDirection.Ascending);

Или то же самое (в скобках - номер колонки, где первая колонка 0):

this.dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending);

Запретить сортировку в dataGridView

foreach (DataGridViewColumn column in dataGridView1.Columns)
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }

Запретить изменение размера ячеек пользователем в dataGridView

dataGridView1.AllowUserToResizeRows = false;

Выделить всю строку в dataGridView

grdExchangeRate.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;

Скрыть колонки dataGridView

this.dataGridViewName.Columns[3].Visible = false;
или
this.dataGridViewName.Columns["column_name"].Visible = false;

А также без данных (слева):

this.dataGridViewName.RowHeadersVisible=false;

Текущая ячейка dataGridView - в переменную

string s =  dataGridView1.CurrentCell.Value.Tostring();

В Label:

 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           string s = dataGridView1.CurrentCell.Value.ToString(); 
            label1.Text = s;
        }

В заголовок формы:

 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           string s = dataGridView1.CurrentCell.Value.ToString(); 
            this.Text = s;
        }

Подсчёт строк в dataGridView

label1.Text = "Всего строк: " + Convert.ToString(dataGridView1.Rows.Count);

Или так:

int noOfRows = dataGridView1.RowCount; 
MessageBox.Show(noOfRows.ToString());

Или так:

lbl_row.Text = dataGridView1.RowCount.ToString();

Подсчёт строк в listBox

label1.Text = listBox1.Items.Count.ToString();

Контекстное меню "Копировать" в dataGridView

  1. Добавляете на форму ContextMenuStrip, добавляете пункт Копировать
  2. Выбираете добавленный ContextMenuStrip для DataGridView в окне свойств (свойство ContextMenuStrip)
  3. Двойным по пункту Копировать создаете обработчик щелчка по пункту меню
  4. В обработчик добавляете код:
if (dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
{
    try
    {
        Clipboard.SetDataObject(dataGridView1.GetClipboardContent());
    }
    catch (System.Runtime.InteropServices.ExternalException)
    {
        MessageBox.Show("Копирование невозможно");
    }
}

Контекстное меню "Копировать" в ListBox

  1. Двойным по пункту Копировать создать обработчик щелчка по пункту меню
  2. В обработчик добавить код:
private void копироватьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Clipboard.SetText(listBox1.SelectedItem.ToString());
        }

Диалог закрытия формы

//-----------------------------------------------------------
// запрашивает у пользователя подтверждение на выход,
// Возвращает истину, если подтверждается
private bool AskConfirmQuitAppli()
{
       // Сообщения подтверждения выхода из приложения
       if(MessageBox.Show("Выйти из приложения?",
                          "Сообщение подтверждения" ,
                          MessageBoxButtons.YesNo) == DialogResult.No)
             // нет
             return false;
                    
       // да, остаться
       return true;
}
//-----------------------------------------------------------
// события вызванное Close ()
// Затем инициирует событие Closed, если не будет отменено
private void MainForm_Closing(
        object sender, System.ComponentModel.CancelEventArgs e)
{
       //нет подтверждения, действие аннулируется, событие Closed не срабатывает
       if(AskConfirmQuitAppli()==false)
             e.Cancel= true;
}
 
//-----------------------------------------------------------
// кнопка Закрыть
private void button1_Click(object sender, System.EventArgs e)
{
       // вызывает закрытие (запрос на подтверждение)
       Close();
}
 
//-----------------------------------------------------------
// меню закрыть
private void menuItem3_Click(object sender, System.EventArgs e)
{
       // вызывает закрытие (запрос на подтверждение)
       Close();
}

Rollover эффект

private void pictureBox1_MouseEnter(object sender, EventArgs e)
    {
        ((PictureBox)sender).ImageLocation = "Resources/logo.png";
    }

    private void pictureBox1_MouseLeave(object sender, EventArgs e)
    {
        ((PictureBox)sender).ImageLocation = "Resources/logoonly.png";
    }

Или так:

Bitmap image1 = new Bitmap(Environment.CurrentDirectory + @"\image\" + "button_hover.png");
Bitmap image2 = new Bitmap(Environment.CurrentDirectory + @"\image\" + "button.png");


private void pictureBox1_MouseHover(object sender, EventArgs e)
        {
            pictureBox1.Image = image1;
            
        }
        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.Image = image2;
        }

Запуск программы с правами администратора

Файл Program.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Security.Principal;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
            bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
 
            if (hasAdministrativeRight == false)
            {
                ProcessStartInfo processInfo = new ProcessStartInfo(); //создаем новый процесс
                processInfo.Verb = "runas"; //в данном случае указываем, что процесс должен быть запущен с правами администратора
                processInfo.FileName = Application.ExecutablePath; //указываем исполняемый файл (программу) для запуска
                try
                {
                    Process.Start(processInfo); //пытаемся запустить процесс
                }
                catch (Win32Exception)
                {
                    //Ничего не делаем, потому что пользователь, возможно, нажал кнопку "Нет" в ответ на вопрос о запуске программы в окне предупреждения UAC (для Windows 7)
                }
                Application.Exit(); //закрываем текущую копию программы (в любом случае, даже если пользователь отменил запуск с правами администратора в окне UAC)
            }
            else //имеем права администратора, значит, стартуем
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
        }
    }
}

Добавление в автозагрузку

Это пример. Не стоит злоупотреблять добавлением программ в автозагрузку.

private void button1_Click(object sender, EventArgs e)
        {
            //string ExePath = Application.ExecutablePath; //Возвращает путь исполняемого файла, запустившего приложение, включая имя исполняемого файла.
            string ExePath = @"C:\program\program.exe"; // Или конкретная программа
            RegistryKey reg;
            string name = "Программа";
            reg = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\");//Здесь переходим по реестру
            try
            {

                reg.SetValue(name, ExePath); //устанавливаем значение
                reg.Close(); //сохраняем изменения
            }
            catch
            {
            }
        }

Удаление из автозагрузки

private void button3_Click(object sender, EventArgs e)
        {
            //string path = Application.ExecutablePath; //Возвращает путь исполняемого файла, запустившего приложение, включая имя исполняемого файла.
            string path = "D:\\Projects\\Radio\\Radio\\bin\\Debug\\Radio.exe"; // Или конкретная программа
            RegistryKey reg = Registry.CurrentUser.OpenSubKey(@"Software\\Microsoft\\Windows\\CurrentVersion\\Run\\", true);
            if (reg != null)
                foreach (string valueName in reg.GetValueNames())
                {
                    if (reg.GetValue(valueName).ToString().StartsWith(path))
                    { reg.DeleteValue(valueName); break; }
                }
        }

Показать значение trackBar

private void trackBar1_Scroll(object sender, EventArgs e)
        {
            // При перемещении ползунка будет показано значение в заголовке окна.
            this.Text = "Value: " + trackBar1.Value;
        }