0 17.1K ru

Шпаргалка по C# и .NET Framework

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

Смотрите так же шпаргалку по LINQ и SQL

Оглавление:

1) Типы данных C#

2) Массивы

3) Работа со строками

4) Windows forms

   4.1) Основное

   4.2) Работа с формой

   4.3) Работа с ListBox

   4.4) Работа с ListView

   4.5) Работа с графикой

   4.6) Работа с кнопкой

   4.6) Работа с таймером

   4.6) DataGridView

5) Работа с файлами

6) DataSet

7) Другое

Типы данных C#

Краткое имя

.Класс .NET

Тип

Width

Диапазон (бит)

byte

Byte

Целое число без знака

8

От 0 до 255

sbyte

SByte

Целое число со знаком

8

От -128 до 127

int

Int32

Целое число со знаком

32

От -2 147 483 648 до 2 147 483 647

uint

UInt32

Целое число без знака

32

От 0 до 4 294 967 295

short

Int16

Целое число со знаком

16

От -32 768 до 32 767

ushort

UInt16

Целое число без знака

16

От 0 до 65 535

long

Int64

Целое число со знаком

64

От -922 337 203 685 477 508 до 922 337 203 685 477 507

ulong

UInt64

Целое число без знака

64

От 0 до 18 446 744 073 709 551 615

float

Single

Число одинарной точности с плавающей запятой

32

От -3,402 823e38 до 3,402 823e38

double

Double

Число двойной точности с плавающей запятой

64

От -1,797 693 134 862 32e308 до 1,797 693 134 862 32e308

char

Char

Одиночный знак Юникода

16

Знаки Юникода в тексте

bool

Boolean

Логический тип

8

true или false

object

Object

Базовый тип для всех остальных типов

 

 

string

String

Последовательность знаков

 

 

decimal

Decimal

Точный дробный или целочисленный, который может представлять десятичные числа с 29 значащими цифрами.

128

От ±1,0 Ч 10e−28 до ±7,9 Ч 10e28

Массивы

Объявление одномерного массива:

int N = 10;
int[] a = new int[N];

Динамический массив

ArrayList array=new ArrayList();

Чтение в массив

string[] lst = richTextBox1.Lines;// читаем список

Скопировать элементы массива m2 в m1

m2.CopyTo(m1,n);//Переписывает все элементы из m2 в m1, начиная с позиции n в m1 // Чтобы это работало, в m1 должно быть достаточно места..	

Пропинговать айпи

Ping ping = new Ping(); PingReply reply = ping.Send("google.com");
reply.RoundtripTime; // результат в мс

Перевод в систему счисления

int number = 10;  // произвольное число int system = 2; // система счисления
string s = Convert.ToString(number, system); // преобразование

Работа со строками

скопировать строку s2 в строку s1

s1 = String.Copy(s2); //Создает копию s2 и присваивает ее адрес s1

Разделить строку string на массив подстрок

string s = "ab/ab"; 
string[] mass = s.Split('/'); // где ‘/’ индификатор по которому делится строка

Обрезать строку

string a; // 1 строка  string b; // 2 строка
a = b.Remove(a1, b1); //  обрезаем строку б, где а1 позиция с какой нужно обрезать, б1 число удаляемых знаков

Бегущая строка windows forms

private void timer2_Tick(object sender, EventArgs e)
        { scrollText = scrollText.Substring(1,(scrollText.Length - 1)) + scrollText.Substring(0, 1); this.Text = scrollText; }

Быстрое создание массива строк при помощи метода Split

using System.Text.RegularExpressions;
String[] s = Regex.Split("Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь", " ");

Windows forms

Основное:

Назначение события на клавишу

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
   if (keyData == Keys.F5) 
   {
      MessageBox.Show("Do Something"); return true; 
   } 
   return base.ProcessCmdKey(ref msg, keyData); 
}

Избавится от мерцания окна в windows form

       protected override CreateParams CreateParams
        {  get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED  
               if (this.IsXpOr2003 == true)
                    cp.ExStyle |= 0x00080000;  // Turn on WS_EX_LAYERED
                return cp;
            }
        }
        private Boolean IsXpOr2003
        {
            get
            {
                OperatingSystem os = Environment.OSVersion;
                Version vs = os.Version;
                if (os.Platform == PlatformID.Win32NT)
                    if ((vs.Major == 5) && (vs.Minor != 0))
                        return true;
                    else
                        return false;
                else
                    return false;  
            }
        }

Получить расширение экрана

Rectangle screenSize = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
MessageBox.Show(String.Format("Screen resolution is {0} x {1}" ,screenSize.Size.Height,screenSize.Size.Width));

Массив контролов (TextBox), объявление:

 TextBox[] tb = new TextBox[10];
for (int i = 0; i < tb.Length; i++)
{   tb[i] = new System.Windows.Forms.TextBox();
    tb[i].Location = new System.Drawing.Point(101, 50 + i * 30);
    tb[i].Name = "textBox" + i.ToString();
    tb[i].Size = new System.Drawing.Size(75, 23);
    tb[i].TabIndex = i;  tb[i].Text = "textBox" + i.ToString();                
    Controls.Add(tb[i]); 
}

Получить доступ к конкретному текстбоксу можно по индексу

tb[2].Text = "newText";

Получить доступ к контролу по имени

(Controls["textBox1"] as TextBox).Text = "newText";

Пройтись по всем однотипным контролам

foreach (Control control in Controls)  //Пример обхода всех TextBoxов
{ 
   TextBox tb = control as TextBox;
   if (tb != null) tb.Text = "Text";
}

Меняем местами переменные не используя 3-ей

A = 35; B = 24 ; A = A + B; B = A – B; A = A – B; 

Округлить число к заданной точности

var es = Math.Round(M / n) *n; //M – число N точность 

Очистить поля TextBox`ov

Controls.OfType<TextBox>().Select(x => x.Text = "").All(x => true);

Попадание точки в фигуру

Bitmap bm = new Bitmap("рисунок1.jpg"); 
Point pt = new Point(40, 40); // координаты точки
if(bm.GetPixel(pt.X, pt.Y) == Color.Black)// если цвет чёрный на данном пикселе 
    MessageBox.Show("Попал"); // попал  
else // иначе (если цвет вона) MessageBox.Show("промахнулся"); // промахнулся

Добавить программу в автозапуск

Microsoft.Win32.RegistryKey myKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\",true);
myKey.SetValue("MyAppName",Application.ExecutablePath);

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

string test = richTextBox2.Text;
Clipboard.SetDataObject(test, true);   // скопировать в буфер обмена строку тест

Запретить закрытие программы через «приложения»

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
   if (e.CloseReason == CloseReason.TaskManagerClosing) e.Cancel = true; 
}

Узнать координаты мышки

private void Form1_MouseMove(object sender, MouseEventArgs e)
 { // Узнаем позицию мыши относительно экрана 
   // если мышь выходит за форму координаты не меняются   
   label1.Text = MousePosition.X.ToString();
   label2.Text = MousePosition.Y.ToString(); 
 }

Перегрузка оператора

static public double operator +(Ring Q1, double s1) 
{ Q1.S += s1; return Q1.S; }

Работа с формой

Запрет на изменение размера окна

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;

Передача данных из формы в форму

Form2 f2=new Form2(mas);
// во второй форме
int[,] mas;  
public Form1(int[,] mas) { InitializeComponent();  this.mas=mas; }

Убрать форму с экрана

this.ControlBox = false; // Убираем кнопки свернуть, развернуть, закрыть.
this.Text = ""; // Убираем заголовок.
this.ShowInTaskbar = false; //скрыть с панели задач:
this.Opacity = 0; //делаем окно прозрачным

Прозрачность формы

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

Расширение экрана

// Определяем размеры экрана
textBox1.Text = Screen.PrimaryScreen.Bounds.Width.ToString() + 
"x" + Screen.PrimaryScreen.Bounds.Height.ToString();
// Определить рабочую область экрана
textBox1.Text = Screen.GetWorkingArea(this).Width.ToString() + 
"x" + Screen.GetWorkingArea(this).Height.ToString();

Сделать pictureBox прозрачным

this.pictureBox1.BackColor = System.Drawing.Color.FromArgb(
      ((System.Byte)(255)), ((System.Byte)(128)),((System.Byte)(128)));
this.TransparencyKey = System.Drawing.Color.FromArgb(
      ((System.Byte)(255)), ((System.Byte)(128)),((System.Byte)(128)));

Ввести в ячейку браузера логин и пароль

webBrowser1.Document.GetElementById("name").SetAttribute("value", "myLogin");  // name – название «текстбокса» логина  mylogin – наш логин    
webBrowser1.Document.GetElementById("password").InnerText = "mypassword"; // password – название «текстбокса» пароля mypassword -пароль

Покрасить слово в richtextbox

void SEARCH_AND_HIIGLIGHT(string text, Color col) // text строка  col цвет в который красить 
{
   richTextBox1.DeselectAll();  
   richTextBox1.Find(text, RichTextBoxFinds.MatchCase);
   richTextBox1.SelectionColor = col;
}

Работа с ListBox

Записываем выбранный элемент в стринг

string train = Convert.ToString(list.SelectedItem);

Запись стрингового массива в элементы листбокса

list.Items.AddRange(directories);

Изменить настройки settings

namespace.Properties.Settings.Default.hello = s; // изменить настройки
namespace.Properties.Settings.Default.Save(); // сохранить 

Работа с ListView

Работа с  подстроками и заголовками

listView1.Columns.Add("ss"); // добавить столбец отображающийся в details
listView1.Columns.Clear(); // очистить столбцы
listView1.Items[0].SubItems.Add("ss"); // добавить подэлемент который отображается в столбце

Проверка принадлежности точки многоугольнику

bool pointInTriangle(Point p, Point a, Point b, Point c)
 {
       return ((p.classify(a, b) != LEFT) && (p.classify(b, c) != LEFT) && (p.classify(c, a) != LEFT)); 
 }//функция classify(a, b) определяет где находится точка относительно отрезка AB

Выбрать элементы в сплошную ( как в диспетчере задач в вкладке процессы)

listView1.FullRowSelect = true;

Работа с Графикой

Определение поля для рисования

Graphics gr = pictureBox1.CreateGraphics(); // пикчер бокс служит полотном для рисования

Создание пера для рисования

Pen pen1 = new Pen(new SolidBrush(Color.Red)); // где SolidBrush  тип пера   

Сдвиг точки на указанное расстояние и на указанный угол

double atan2 = 1.57; // Угол в радианах
double X =x1 + l * Math.Cos(atan2); // косинус  угла сдвига (в радианах)  умноженный на длину и + координаты от какой точки по Х
double Y = y1 + l * Math.Sin(atan2); // синус угла сдвига (в радианах)  умноженный на длину и + координаты 1 точки по У

Работа с кнопкой

public Button Studbutton; = new Button(); // создание кнопки в памяти
Studbutton.Enabled = true; // включаем кнопку
Studbutton.Location = new Point(40,40); // место положения кнопки
Studbutton.Size = new Size(100, 25); // размер кнопки 
Studbutton.Visible = true; // включаем кнопку
Studbutton.Text = ""; // имя кнопки 
FyraButtons.BackgroundImage = Image.FromFile("img/fura.bmp"); //фоновая картинка
f.Controls.Add(Studbutton); // добавляем кнопку в контролы формы ( с данного момента кнопка отображается)  (f это название переданой формы)
this.Studbutton.Click += new System.EventHandler(Studbutton_Click);
// добавляем нажатие на  кнопку к списку рассылок кнопки

Функция нажатия на кнопку(скопирована из стандартной)

public void Studbutton_Click(object sender, EventArgs e) 
{
}

Работа с таймером

Объявление и инициализация таймера

System.Windows.Forms.Timer timer; 
timer = new System.Windows.Forms.Timer(); 
timer.Tick += new EventHandler(Fire); // подключаем функцию  к списку рассылки ( при окончании отсчёта будет вызвана данная функция)
timer.Interval = 1000; // интервал после которого таймер тикнет (в Мили секундах)  и вызовется функция Fire 
timer.Enabled = true; // включение таймера и начало отсчёта

Функция тика таймера

void Fire(Object sender,EventArgs e){}// срабатывает когда интервал таймера пройден

DataGridView

Выключить стандартный столбец (тот что слева)

RowHeadersVisible = false;

Выделять всю строку (как в диспетчере задач)

grdExchangeRate.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;

Заполнение DataGridView

for (i = 0;i<n;i++){
 dataGridView1.Rows[i].Cells[0].Value = i; 
}// Где Rows строка а Cells ячейка(столбец)

Позволение рисовать на датагриде

dataGridView1.CreateGraphics();

Узнать в какой форме расположен датагрид

dataGridView1.FindForm(); // показывает форму в которой находится датагрид

Добавить строку

dataGridView1.RowCount = 5; //  где число строк отображаемых в dataGridView 

Убрать стандартную пустую строчку в datagrid

Работа с файлами

Чтение из файла  (требуется using System.IO;) 

string[] s1 = File.ReadAllLines(@"data1.txt");

Создание и запись  файла (требуется using System.IO;)

File.WriteAllText (@"data1.txt",textBox1.Text+"\n");

Получить имена директорий в заданной папке и записать их в массив

string[] directories = System.IO.Directory.GetDirectories(@"/base");

Проверяет, существует ли файл

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : 
"File does not exist.");

Закрыть доступ к файлу

string filename = @"C:\test.txt";
FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.None); // закрыть доступ
stream.Close();// открыть доступ

Работа с System.IO.Path

string fullPath = "c:\\Downloads\\output\\t0.html"; 
string pathPart = Path.GetPathRoot(fullPath); // возвращает "c:\"
string filePart = Path.GetFileName(fullPath); // возвращает "t0.html" 
string extPart = Path.GetExtension(fullPath); // возвращает ".html" 
string dirPart = Path.GetDirectoryName(fullPath);// возвращает "c:\downloads\output"

DataSet

Поменять расположение столбца

_ds.Tables[0].Columns["Опции"].SetOrdinal(n); // где n новая позиция ячейки

Считывание xml с файла и выборка данных в dataset

dataSet.ReadXml("http://resources.finance.ua/ru/public/currency-cash.xml");
// выбрать такие строки из таблицы «с» где поле currencies_Id = 0
DataRow[] price = dataSet.Tables["c"].Select("(currencies_Id = 0)");

Основное

IP адрес локального ПК

string strIP = ""; System.Net.IPHostEntry host;
host = System.Net.Dns.GetHostEntry(strIP);
foreach (System.Net.IPAddress ip in host.AddressList) 
{
 MessageBox.Show(ip.ToString());
}

Отправить email

using System.Web; using System.Net; using System.Net.Mail; 
using System.Net.Mime;
SmtpClient Smtp = new SmtpClient("smtp.gmail.com", 587); // 587 это порт
Smtp.Credentials = new NetworkCredential("login", "password");
 //Формирование письма
MailMessage Message = new MailMessage();
Message.From = new MailAddress("from@ok.com"); //от кого
Message.To.Add(new MailAddress("to@ok.com")); // кому
Message.Subject = "Заголовок"; Message.Body = "Сообщение"; Smtp.Send(Message);//отправка

Правильное заполнение Filter в OpenFileDialog

Filter ="Графические изображения(*.BMP;*.JPG;*.TGA;PNG)|*.BMP;*.JPG;*.TGA;*.GIF

Перечислимый тип (enum)

enum Color // объявление {  //перечислимые элементы Red,Green,Blue}
public Form1(){// наглядное использование enum
  Color r = Color.Red;  Color b = Color.Blue; Color g = Color.Green; }

Узнать раскладку клавиатуры и сменить её

InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage; 
// текущая раскладка 
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("ru-RU"));// сменить на русскую

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

Thread potok = new Thread(new ThreadStart(oktest)); // объявление потока, где oktest произвольная функция  
potok.Start();// запуск потока

НОД

int GCD(int a, int b) 
{
   while (b != 0) b = a % (a = b);
   return a;
}

Get Запрос

public string SendGet()
       {
        try
           { 
               var httpWebRequest = (HttpWebRequest) WebRequest.Create("http://site.com");
               httpWebRequest.AllowAutoRedirect = false; //Запрещаем автоматический redirect
               httpWebRequest.Method = "GET"; //Можно не указывать, по умолчанию используется GET. 
               httpWebRequest.Referer = "https://rdot.org";
               httpWebRequest.UserAgent = UserAgent;
               using (var httpWebResponse = (HttpWebResponse) httpWebRequest.GetResponse())
               {
                   using (var stream = httpWebResponse.GetResponseStream())
                   { 
                       using (var reader = new StreamReader(stream,Encoding.GetEncoding(httpWebResponse.CharacterSet)))
                       { return reader.ReadToEnd();}
                   }
               }
           }
           catch
           { 
              return null; 
           }
       }

Post запрос

public string SendPost(string postData)
        {
            var httpWebRequest = (HttpWebRequest) WebRequest.Create("http://site.com");
            httpWebRequest.AllowAutoRedirect = false;
            httpWebRequest.Method = "POST";
            httpWebRequest.ContentType = "application/x-www-form-urlencoded";
            var buffer = Encoding.ASCII.GetBytes(postData);
            httpWebRequest.ContentLength = buffer.Length;
            using (var writer = httpWebRequest.GetRequestStream())
            { writer.Write(buffer, 0, buffer.Length); }
            using (var httpWebResponse = (HttpWebResponse) httpWebRequest.GetResponse())
            {
                using (var stream = httpWebResponse.GetResponseStream())
                {
                    using (var reader = new StreamReader(stream, Encoding.GetEncoding(httpWebResponse.CharacterSet)))
                    { return reader.ReadToEnd(); }
                }
            }
        }

Асинхронный вызов методов

 public delegate double ComputingDelegate(double a);
        public static double Plus(double a)
        {
            Console.WriteLine("Функция начала работу в " + DateTime.Now);
            Thread.Sleep(3000);
            lock (new Object())
            {
                return a + Suma;
            }
        }
        public static double Suma = 0;
        private static void Main()
        {

            ComputingDelegate computing = Plus;
            while (true)
            {
                Console.WriteLine("Введите сумму");
                computing.BeginInvoke(Convert.ToDouble(Console.ReadLine()),AddComplete, null);
            }
        }
        public static void AddComplete(IAsyncResult itfAR)
        {
            // Обработка результата от функции
            Console.WriteLine("AddComplete() работало в потоке {0}.",
            Thread.CurrentThread.GetHashCode());
            Console.WriteLine("Вычисление завершено в " + DateTime.Now);

            // Получаем результат.
            AsyncResult ar = (AsyncResult)itfAR;
            ComputingDelegate b = (ComputingDelegate)ar.AsyncDelegate;
            Suma = b.EndInvoke(itfAR);
            Console.WriteLine("Сумма = {0}.", Suma);
        }
    }

Проверка содержится ли определенное значение в массиве

string cellNumPrefix = "098";
            string[] codes = { "093", "094", "077", "098" };
            if (((IList<string>)codes).Contains(cellNumPrefix))
            {
                Console.WriteLine("Номер найден");
            }

Создание своего класса Exception и использованием сериализации

  [Serializable]
public class MyException : Exception
    {
        private string mes1; // Сообщение о случившемся

        public MyException() { } // Обязательный конструктор

        public MyException(String ss) { mes1 = ss; } // Конструктор

        // Переопределение свойства Exception.Message.
        public override string Message
        {
            get { return ("На сервере возникло: " + mes1); }
        }
        // Переопределение для добавления новых данных при сериализации.
        public override void GetObjectData(SerializationInfo info,
                                           StreamingContext context)
        {
            info.AddValue("my1", mes1, mes1.GetType());
            base.GetObjectData(info, context);
        }
        // Обязательный конструктор для десериализации
        protected MyException(SerializationInfo info,
                              StreamingContext context)
            : base(info, context)
        {
            mes1 = info.GetString("my1");

        }
    }

Создание пользовательского атрибута

public class Author : Attribute
    {
        private string name;
        public double version;

        public Author(string name)
        {
            this.name = name;
            version = 1.0;
        }
    }

Печать элементов массива

string[] a = new string[]{"hi","321","test"};
            MessageBox.Show(string.Join("\n", a.Select(x => x)));

Использование именованных параметров

  public void Test(int myParameter1, bool myParameter2)
       {           
       }
Test(myParameter1: 1231, myParameter2: true); //тут мы используем именованные параметры

Регулярное выражение для преобразования ссылок в html ссылки (<a> теги)

private string ConvertUrlsToLinks(string msg)
        {
            string regex = @"((www\.|(http|https|ftp|news|file)+\:\/\/)[_.a-z0-9-]+\.[a-z0-9\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])";
            Regex r = new Regex(regex, RegexOptions.IgnoreCase);
            return r.Replace(msg, "<a href=\"$1\" title=\"Click to open in a new window or tab\" target=\"_blank\">$1</a>").Replace("href=\"www","href=\"http://www");
        }

Пример создания словаря в C#

class Test
    {
        private object _key;
        public virtual object this[object key]
        {
            get { return _key; }
            set
            {
                _key = value;
            }
        }
    }
var test = new Test();
test["testKey"] = "sd"; // задаем новое значение по ключу (аналог Dictionary)

 

Comments:

Please log in to be able add comments.