|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Справочник по C#/Записи в блоге |
![]() |
|
Получаем список букв латинского алфавита
2012-11-01 10:28:22 (читать в оригинале)

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 (читать в оригинале)

Сначала подключаем необходимые нам для работы пространства имен:
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 (портов) и попытаться подключиться к каждому, как я уже объяснял ранее. На скриншоте ниже вы можете увидеть полную реализацию данной задачи и ее код: 
// Заносим в переменную 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 (читать в оригинале)

Для реализации нам понадобятся две формы, главная и дочерняя.
Для создания дочернего(вторая форма) перейдите в обозреватель решений и правой клавишей мыши щелкните но названию проекта, далее выберите Добавить-> Создать элемент и выберете "Фома 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 (читать в оригинале)

Вот сам код:
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);
}
Категория «Новости»
Взлеты Топ 5
|
| ||
|
+657 |
774 |
Zombiefan.ru Фильмы про зомби |
|
+654 |
754 |
VKSeattle |
|
+643 |
762 |
Правила форума |
|
+620 |
626 |
Lexsandr |
|
+614 |
633 |
Mandrake |
Падения Топ 5
|
| ||
|
-3 |
2 |
Темы_дня |
|
-4 |
347 |
Компания Альпари |
|
-7 |
20 |
Prestissima |
|
-7 |
5 |
BlogRider |
|
-8 |
4 |
Любер |
Популярные за сутки
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.

