C# Windows-Form шпоргалка

Элементы

checkedListBox »

изменяем шрифт

//измменяем 
checkedListBox1.Font = new Font(checkedListBox1.Font.Name, 14,
                checkedListBox1.Font.Style);
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 WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //очищает 
            //     checkedListBox1.Items.Clear();
            checkedListBox1.CheckOnClick = true;//установка в один клик
            checkedListBox1.Items.Add("one two");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //   MessageBox.Show(checkedListBox1.SelectedItems.Count.ToString());
            //    MessageBox.Show(checkedListBox1.CheckedItems.Count.ToString());//количество выбраных элементов
            // First show the index and check state of all selected items.
            
            foreach (int indexChecked in checkedListBox1.CheckedIndices)
            {
                // The indexChecked variable contains the index of the item.
                MessageBox.Show("Index#: " + indexChecked.ToString() + ", is checked. Checked state is:" +
                                checkedListBox1.GetItemCheckState(indexChecked).ToString() + ".");
            }

        }
    
    }
}

Вывод сообщения MessageBox.Show

Показать »

private void button1_One(object sender, EventArgs e)
{
    string caption = "caption";
    string text = "This is text";
    MessageBoxButtons button = MessageBoxButtons.YesNoCancel;//добавляем кнопку
    MessageBoxIcon icon = MessageBoxIcon.Warning;//предупреждение
    DialogResult res = MessageBox.Show(text, caption, button, icon);
    if (res == DialogResult.Yes)
    {
        MessageBox.Show("Yes");
    }
    else if (res == DialogResult.No)
    {
        MessageBox.Show("No");
    }
    else if (res == DialogResult.Cancel)
    {
        MessageBox.Show("Cancel");
    }
}

Перевод из int в string

Показать »

int n = 100;
string str = Convert.ToString(n, 10);
MessageBox.Show("n=" + str);

Вывод от 0 до 1000 в TextBox

Показать »

for(int i = 0; i < 1000; i++)
{
    textBox_One.AppendText(Convert.ToString(i, 10)+"n");
    Application.DoEvents();
}

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

Показать »

private void button1_One(object sender, EventArgs e)
{
    System.Threading.Thread t = new System.Threading.Thread(f);
    t.IsBackground = true;//делаем чтобы поток был не фоновым
    t.Start();//запуск 
}

//функция потока
private void f()
{
    MessageBox.Show("start");
    for(int i = 0; i < 1000; i++)
    {
        //textBox_One.Text = ;
        // textBox_One.AppendText(Convert.ToString(i, 10)+"n");
        Application.DoEvents();
    }
    MessageBox.Show("end");
}

Создание таймера

Показать »

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        System.Windows.Forms.Timer timer;
        public Form1()
        {
            InitializeComponent();
            timer = new System.Windows.Forms.Timer();
        }

        private void button1_One(object sender, EventArgs e)
        {
            timer.Interval = 3000;
            timer.Tick += new EventHandler(f_timer);//подписка на событие
            timer.Start();//запускаем таймер
        //    timer.Stop();//останавливаем таймер
        }

        //функция таймера
        private void f_timer(object sender, EventArgs e)
        {
            MessageBox.Show("timer");
        }
    }
}

Вывод в TextBox с помощью таймера и потока

Показать »

 

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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        System.Windows.Forms.Timer m_timer;
        int m_count=0;
        bool m_thread;// запуск/остановка потока
         

        public Form1()
        {
            InitializeComponent();

            m_timer = new System.Windows.Forms.Timer();
            

        }

        private void button_Start_Click(object sender, EventArgs e)
        {
            //таймер
            m_timer.Interval = 2000;//2 секунды
            m_timer.Tick += new EventHandler(f_timer);//подписка на событие
            m_timer.Start();//запускаем таймер

            //поток
            m_thread = true;//логический запуск потока
            System.Threading.Thread t = new System.Threading.Thread(f_thread);//поток
            t.IsBackground = true;//запрет фонового режима
            t.Start();//запуск потока
        }

        //функция таймера
        private void f_timer(object sender, EventArgs e)
        {
            textBox_One.AppendText(Convert.ToString(m_count, 10) + 'n');
        }

        //функция потока
        private void f_thread()
        {
            MessageBox.Show("StartThread");
            for(int i = m_count; (i < 10000) && (m_thread==true); i++)
            {
                Application.DoEvents();
                m_count = i;

                //делаем задержку иначе не будет видно
                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.1));
            }
            MessageBox.Show("EndThread"+m_count);
        }

        private void button_Stop_Click(object sender, EventArgs e)
        {
            m_thread = false;//выход из потока
            m_timer.Stop();//остановка таймера
            m_timer.Tick -= new EventHandler(f_timer);//отписка на событие

        }
    }
}

Перегрузка закрытия программы “крестика”

Показать »

Делается так же как и в MFC выбираем форму, заходим в свойства, и для нее выбираем событие

Screenshot_3создастся обработчик, в него добавляем код

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    MessageBox.Show("Form1_FormClosing");
}

Создание модального диалога

Показать »

С Window Forms диалог создается посложнее чем в WPF.

Создаем еще одну форму, накидываем на нее элементы управления

Screenshot_4Вот ее код

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 WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public string textBox;
        public Form2(string s)
        {
            InitializeComponent();
            textBox1.Text = s;
        }

        private void button_Ok_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.OK;
            textBox = textBox1.Text;
            Close();//закрываем окно
        }

        private void button_Cancel_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            Close();//закрываем окно
        }
    }
}

И в Form1 обработчик кнопки который создает диалог вот его код

private void button_Dialog_Click(object sender, EventArgs e)
{
    Form2 dlg = new Form2(str);

    //конфигурация
    dlg.Owner = this;
            
    if(dlg.ShowDialog()==DialogResult.OK)
    {

        MessageBox.Show("ok text="+dlg.textBox);
    }
    else
    {
        MessageBox.Show("cancel");
    }
            
}

Сделать кнопку неактивной или поле

Показать »

button_Start.Enabled = false;

Создание процесса

Показать »

System.Diagnostics.Process.Start("cmd.exe", "/C RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255");

Обработака исключений

Показать »

try
{
}
catch (SystemException)
{

}

Запуск процесса и создание пайпа

Показать »

//функция потока
private void f_thread()
{
    var psi = new ProcessStartInfo("phantomjs.exe", "test1.js hellow world");
    psi.RedirectStandardOutput = true;//выходной поток
    psi.RedirectStandardInput = true;//входной поток
    psi.RedirectStandardError = true;//поток ошибок
    psi.WindowStyle = ProcessWindowStyle.Hidden;
    psi.UseShellExecute = false;//нужно иначе ислючение хз. че но вызывает
    psi.CreateNoWindow = true;

    Process svnCommand = null;
    string output = string.Empty;
    string input = string.Empty;
    string errorLines = string.Empty;

    svnCommand = Process.Start(psi);//создаем процесс

    //перегружаем потоки
    StreamWriter myStreamWriter = svnCommand.StandardInput;
    StreamReader myStreamReater = svnCommand.StandardOutput;
            
    //пока существует процесс
    while(!svnCommand.HasExited)
    {
        //выходной поток
        output = myStreamReater.ReadLine();
        if (output.Length > 0)
        {
            MessageBox.Show("output=" + output);
        }

        //входной поток
        input = "hellow";
        if (input.Length > 0)
        {
            myStreamWriter.WriteLine(input);
        }
    }
 
    svnCommand.Close();//закрываем процесс
    svnCommand.Dispose();//освобождаем ресурсы

    MessageBox.Show("end");
}

С# работа с файлами

Показать »

// 2. проверяем была ли авторизация
            Stream stream = webBrowser.DocumentStream;
            StreamReader sr = new StreamReader(stream, Encoding.Default);
            string text = sr.ReadToEnd();
            stream.Close();
            //textBox.Text = text;
            //сохраняем в файл с кодировкой по умолчанию
            File.WriteAllText("data.html", text ,Encoding.Default);

С# Использование мютексов

Показать »

почитать можно тут.

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;
using System.IO;//подключаем библиотеку для работы с файлами
using System.Threading;

namespace WindowsForms_test
{
    public partial class Form1 : Form
    {
        //создаем мьютекс
        private static Mutex mut = new Mutex(false, "id333");
        public Form1()
        {
            InitializeComponent();
        }

        private void button_Start_Click(object sender, EventArgs e)
        {
            if(mut.WaitOne(1000))
            {
                MessageBox.Show("ddddd");
                //занимаем мютекс
            //    Thread.Sleep(70000);
            }
            else
            {
                MessageBox.Show("Не удалось полуить mut");
            }
        }

        private void button_Stop_Click(object sender, EventArgs e)
        {
            mut.ReleaseMutex();
            //    fstream.Close();
            MessageBox.Show("Stop");
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *