![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Справочник по C#/Записи в блоге |
![]() |
|
Получаем список букв латинского алфавита
2012-11-01 10:28:22 (читать в оригинале)
![](http://4.bp.blogspot.com/-6Q9c__G0PVU/UJIVTSzyQGI/AAAAAAAAB1U/PyGPKbky9NU/s400/character_map.png)
protected void GetAlphabet() { string strAlpha = ""; for (int i = 65; i <= 90; i++) { strAlpha += ((char)i).ASCII () + " "; listBox3.Items.Add(((char)i) + " "); } }
Создание Port Scanner с C#
2012-11-01 09:19:54 (читать в оригинале)
![](http://4.bp.blogspot.com/-I9_tvMsH2h0/UJIBxO-XVII/AAAAAAAAB0g/eLAIi-tP8yU/s1600/network%2B%25282%2529.png)
Сначала подключаем необходимые нам для работы пространства имен:
using System.Net.Sockets;
Предположим, мы хотим, просканировать порты с 1 по 25 для IP 192.168.0.1 (локальный IP-сети):
public void portscan() { //Указываем диапазон сканируемых портов for (int CurrPort = 1; CurrPort <= 25; CurrPort++) { //Инициализируем новый экземпляр класса System.Net.Sockets.TcpClient. TcpClient TcpScan = new TcpClient(); try { //Выполняем подключение клиента к указанному порту заданного узла. TcpScan.Connect("192.168.0.1", CurrPort); //Если подключение выполнено успешно то выводим сообщение MessageBox.Show("Port " + CurrPort + " open"); } catch { //Если мы поймали исключение то порт закрыт MessageBox.Show("Port " + CurrPort + " closed"); } } }В приведенном выше коде мы выполняем цикл от 1 до 25 (портов) и попытаться подключиться к каждому, как я уже объяснял ранее. На скриншоте ниже вы можете увидеть полную реализацию данной задачи и ее код:
![](http://1.bp.blogspot.com/-Lea1UFEI1KA/UJH_rxkiojI/AAAAAAAAB0U/X7TZvcl7aTU/s400/PortScanner.png)
// Заносим в переменную StartPort стартовый номер порта из компонента NumericUpDown StartPort = Convert.ToInt32(numStart.Value); // Заносим в переменную EndPort конечный номер порта из компонента NumericUpDown EndPort = Convert.ToInt32(numEnd.Value); //Выставляем компонент progress bar в нулевое положение prgScanning.Value = 0; // Указываем максимальное значение progress bar prgScanning.Maximum = EndPort - StartPort + 1; // Выставляем курсор в состояние WaitCursor Cursor.Current = Cursors.WaitCursor; // Выполняем цикл от начального до конечного порта for (int CurrPort = StartPort; CurrPort <= EndPort; CurrPort++) { //Инициализируем новый экземпляр класса System.Net.Sockets.TcpClient. TcpClient TcpScan = new TcpClient(); try { //Выполняем подключение клиента к указанному порту заданного узла. TcpScan.Connect(txtIP.Text, CurrPort); //Если подключение выполнено успешно то выводим в txtLog txtLog.AppendText("Port " + CurrPort + " open"); } catch { //Если мы поймали исключение то порт закрыт txtLog.AppendText("Port " + CurrPort + " closed"); } // Выполняем шаг в progress bar prgScanning.PerformStep(); } //Переводим курсор в обычное состояние Cursor.Current = Cursors.Arrow;
Тип ENUM
2012-10-30 09:50:07 (читать в оригинале)
Тип enum предназначен для объявления перечислений. Каждое перечисление это отдельный тип, состоящий из набора именованных констант, который называется списком перечислителя.
Обычно лучше всего определять перечисление прямо в пространстве имен, чтобы всем классам в пространстве имен было одинаково удобно получить к нему доступ.
Перечисления могут сыграть очень важную роль и облегчить жизнь программисту. Объявляются перечисления вот так:
По умолчанию первому перечислителю задано значение, равное нулю, а значение каждого последующего оператора увеличивается на 1. Например:
Обычно лучше всего определять перечисление прямо в пространстве имен, чтобы всем классам в пространстве имен было одинаково удобно получить к нему доступ.
Перечисления могут сыграть очень важную роль и облегчить жизнь программисту. Объявляются перечисления вот так:
public enum DaysOfWeek { Monday = 0, Tuesday = 1, Wednesday = 2, Thursday = 3, Friday = 4, Saturday = 5, Sunday = 6 }Здесь мы используем целые значения, которые соответствуют дням недели (стоит отметить что день можно определить из названия переменной) Доступ к конкретному дню недели можно получить вот так: DaysOfWeek.Wednesday вернет 2. Обычно перечисления используют в тех случаях, когда нужно передавать соответствующее значение методу, который будет проходить по всем значениям с помощью switch и выдавать соответствующий результат. Давайте разберем это на очень простом примере, который даст понять логику работы с перечислениями:
using System; using System.Collections.Generic; using System.Text; namespace EnumerationExample { class Program { public enum DaysOfWeek { Monday = 0, Tuesday = 1, Wednesday = 2, Thursday = 3, Friday = 4, Saturday = 5, Sunday = 6 } static void Main(string[] args) { WriteText(DaysOfWeek.Sunday); Console.ReadLine(); } static void WriteText(DaysOfWeek days) { switch (days) { case DaysOfWeek.Monday: Console.WriteLine("Понедельник"); break; case DaysOfWeek.Tuesday: Console.WriteLine("Вторник"); break; case DaysOfWeek.Wednesday: Console.WriteLine("Среда"); break; case DaysOfWeek.Thursday: Console.WriteLine("Четверг"); break; case DaysOfWeek.Friday: Console.WriteLine("Пятница"); break; case DaysOfWeek.Saturday: Console.WriteLine("Суббота"); break; case DaysOfWeek.Sunday: Console.WriteLine("Понедельник"); break; } } } }Теперь запустите программу, и вы увидите что в консоли появится текст "Понедельник". Мы увидели именно эту фразу, потому что передали в метод WriteText элемент перечисления Sunday, попробуйте передать туда другие дни недели, и вы убедитесь что программа будет выводить именно тот текст что принадлежит соответствующему дню недели. Метод WriteText принимает перечисление, и в зависимости от передаваемого параметра, выводит текст.
По умолчанию первому перечислителю задано значение, равное нулю, а значение каждого последующего оператора увеличивается на 1. Например:
public enum E1 {One, Two, Three}Такое перечисление эквивалентно следующим строкам кода:
const int One = 0; const int Two = 1; const int Three = 2;Таким образом, перечисление — это всего лишь компактное объявление сразу нескольких целочисленных констант.
Привязка окон друг к другу при перетаскивании
2012-10-26 15:36:17 (читать в оригинале)
![](http://3.bp.blogspot.com/-P5c0PxFzoi0/UIpv54HfOyI/AAAAAAAABpc/LkDf3AJt37c/s400/move%2B%25281%2529.png)
Для реализации нам понадобятся две формы, главная и дочерняя.
Для создания дочернего(вторая форма) перейдите в обозреватель решений и правой клавишей мыши щелкните но названию проекта, далее выберите Добавить-> Создать элемент и выберете "Фома Windows Form".
В коде главной формы прописываем код:
public bool down = false, //проверяет, пристыковано ли окно к нижней границе left = false, //проверяет, пристыковано ли окно к левой границе top = false, //проверяет, пристыковано ли окно к верхней границе right = false; //проверяет, пристыковано ли окно к правой границе public double leftlength, toplength; //переменные нужны для вычисления смещения второго окна по отношению к главному //Создаем объект второго окна Form2 fr2 = new Form2();В свойствах главной формы создаем событие LocationChanged и вставляем туда вот этот код:
//Стыковка с нижней границей главного окна if (down) { //Второе окно оставляем у нижней границы главного окна путем смещения координаты верхней границы на значение высоты главного окна fr2.Top = this.Top + this.Height; //А левую границу второго окна смещаем относительно левой границы главного на величину leftlength, установленную в момент стыковки fr2.Left = (int)this.Left + (int)leftlength; } //Соответственно поступаем и при стыковке с другими границами //Стыковка с верхней границей главного окна if (top) { fr2.Top = this.Top - fr2.Height; fr2.Left = (int)this.Left + (int)leftlength; } //Стыковка с левой границей главного окна if (left) { fr2.Left = this.Left - fr2.Width; fr2.Top = (int)this.Top + (int)toplength; } //Стыковка с правой границей главного окна if (right) { fr2.Left = this.Left + this.Width; fr2.Top = (int)this.Top + (int)toplength; }Переходим в код второй формы и также создаем событие LocationChanged и вставляем туда вот это:
Form1 fr1 = this.Owner as Form1; //Стыковка с нижней границей главного окна //Проверяем условия попадания верхней границы данного окна в пределы нижней границы главного окна if ((this.Top < fr1.Top + fr1.Height + 20) && (this.Top > fr1.Top + fr1.Height - 20)) { //Собственно стыковка this.Top = fr1.Top + fr1.Height; //Запоминаем смещение левой границы данного окна и левой границы главного окна (условие ввел для фиксации переменной, чтобы больше не изменять ее во время сеанса текущей стыковки) if (!fr1.down) fr1.leftlength = this.Left - fr1.Left; //Говорим главному окну, что произошла стыковка fr1.down = true; } else fr1.down = false; //Соответственно поступаем с остальными границами //Стыковка с верхней границей главного окна if ((this.Top + this.Height < fr1.Top + 20) && (this.Top + this.Height > fr1.Top - 20)) { this.Top = fr1.Top - this.Height; if (!fr1.top) fr1.leftlength = this.Left - fr1.Left; fr1.top = true; } else fr1.top = false; //Стыковка с левой границей главного окна if ((this.Left + this.Width < fr1.Left + 20) && (this.Left + this.Width > fr1.Left - 20)) { this.Left = fr1.Left - this.Width; if (!fr1.left) fr1.toplength = this.Top - fr1.Top; fr1.left = true; } else fr1.left = false; //Стыковка с правой границей главного окна if ((this.Left < fr1.Left + fr1.Width + 20) && (this.Left > fr1.Left + fr1.Width - 20)) { this.Left = fr1.Left + fr1.Width; if (!fr1.right) fr1.toplength = this.Top - fr1.Top; fr1.right = true; } else fr1.right = false;Этот код реализует стыковку форм и позволяет перетаскивать главной формой состыкованные, и свободно перемещать формы по раздельности если они разъединены!
Привязка окна приложения к краям экрана или блокируем перемещение приложения
2012-10-25 15:16:42 (читать в оригинале)
![](http://4.bp.blogspot.com/-Mo3hX_y7ybY/UIkd2_YZxvI/AAAAAAAABos/C0yKbLvz9YI/s400/preferences_system_windows_move.png)
Вот сам код:
private int width = Screen.PrimaryScreen.Bounds.Width; const int WM_NCLBUTTONDOWN = 0x00A1; const int WM_NCHITTEST = 0x0084; const int HTCAPTION = 2; [DllImport("User32.dll")] static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); protected override void WndProc(ref Message m) { if (m.Msg == WM_NCLBUTTONDOWN) { int result = SendMessage(m.HWnd, WM_NCHITTEST, IntPtr.Zero, m.LParam); if (result == HTCAPTION) return; } base.WndProc(ref m); }Для закрепления формы на краю экрана, просто указываете при запуске расположение вашего приложения:
private void Form1_Load(object sender, EventArgs e) { //привязка формы к определенному месту экрана //верх правого угла экрана this.Location = new System.Drawing.Point(width - this.Size.Width, 0); }
![BlogRider сегодня BlogRider сегодня](/themes/1/i/menu/th/blogrider_today.png)
![Изменения рейтинга Изменения рейтинга](/themes/1/i/menu/th/rating_changes.png)
Категория «Истории»
Взлеты Топ 5
![]() | ||
+1920 |
1940 |
Дрочливый_Драчун |
+1899 |
1946 |
Коптящий_Небо |
+1891 |
1957 |
Da_Queen_of_Da_World |
+1873 |
1964 |
Splash_Phantom |
+1754 |
1777 |
jolly_M |
Падения Топ 5
![]() | ||
-1 |
1270 |
Выдающиеся женщины |
-1 |
829 |
Работа в интернете |
-1 |
1180 |
Вкусное меню |
-2 |
84 |
xpyctal |
-2 |
1062 |
TradeIP |
![Главные темы Главные темы](/themes/1/i/menu/th/main_themes.png)
Популярные за сутки
Загрузка...
![Загрузка... Загрузка...](/themes/1/i/loader/loader.gif)
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.