Шпаргалка по C# и .NET Framework
В этой статье мы хотим вам предложить шпаргалку для языка C# и .NET Framework в которой собраны основные проблемы и их решение для начинающего программиста.
Смотрите так же шпаргалку по LINQ и SQL
Оглавление:
2) Массивы
4.1) Основное
4.2) Работа с формой
4.3) Работа с ListBox
4.4) Работа с ListView
4.5) Работа с графикой
4.6) Работа с кнопкой
4.6) Работа с таймером
4.6) DataGridView
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)