С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 34

Создать приложение Windows Form

10.09.2019, 14:02. Показов 2683. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите, пожалуйста, с заданием. Написала код на С#, представляющий собой парсер сайтов в консольном приложении:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Diagnostics;
namespace ConsoleApp1
{
    class Parsing
    {
        // поля
        private string url;
        private string content;
        // свойства
        public string Content
        {
            get { return this.content; }
        }
        // конструктор
        public Parsing(string _url)
        {
            this.url = _url;
            this.content = getContent();
        }
        // методы
        public void loadFiles(List<Parsing.Refer> list, string saveDir)
        {
            string pathApp = Directory.GetCurrentDirectory();
            Directory.CreateDirectory(saveDir); // подключите System.IO
            string pathSave = pathApp + "/" + saveDir + "/";
            WebClient webClient = new WebClient(); // подключите System.Net
            foreach (var elm in list)
            {
                webClient.DownloadFile(elm.href, pathSave + elm.innerHTML);
            }
        }
        private string getInnerHTML(string contentTag)
        {
            return contentTag.Split('>')[1].Trim();
        }
        private string getHref(string contentTag)
        {
            return contentTag.Split('>')[0].Trim().Split(' ')[0].Split('=')[1].Trim();
        }
        private bool checkHRef(string href)
        {
            return href.Split('.').Reverse().ToArray()[0] == "txt";
        }
        public List<Refer> getReferences()
        {
            List<Refer> list = new List<Refer>();
            int posLeft = 0, posRight = 0;
            string strLeft = "<a", strRight = "</a>";
            string contentTag; // всё содержимое тега a
            Refer temp;
            while (content.IndexOf(strLeft, posLeft) > 0)
            {
                posLeft = content.IndexOf(strLeft, posLeft) + strLeft.Length;
                posRight = content.IndexOf(strRight, posLeft);
                contentTag = content.Substring(posLeft, posRight - posLeft);
                temp.href = getHref(contentTag);
                temp.innerHTML = getInnerHTML(contentTag);
                if (checkHRef(temp.href)) list.Add(temp);
                posLeft = posRight;
            }
            return list;
        }
 
        private string getContent()
        {
            WebClient webClient = new WebClient();
            webClient.Encoding = Encoding.GetEncoding("utf-8");
            return webClient.DownloadString(this.url);
        }
        public struct Refer
        {
            public string href;
            public string innerHTML;
        }
 
        public string getFromTag(string findTag)
        {
            string result = ""; int posLeft = 0, posRight = 0;
            posLeft = content.IndexOf(findTag, posLeft) + findTag.Length;
            posRight = content.IndexOf(findTag, posLeft);
            result = content.Substring(posLeft + 1, posRight - posLeft - 3);
            return result;
        }
 
    }
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://pcoding.ru/darkNet.php";
            Parsing parser = new Parsing(url);
            List<Parsing.Refer> list = parser.getReferences();
            foreach (var elm in list)
            {
                Console.WriteLine("{0}\t{1}", elm.innerHTML, elm.href);
            }
            Console.Write("\r\nСохранить выбранные файлы? (Enter-ДА/Escape-НЕТ)");
            ConsoleKeyInfo key;
            do
            {
                key = Console.ReadKey(true);
            }
            while (!((key.Key == ConsoleKey.Escape) || (key.Key == ConsoleKey.Enter)));
            if (key.Key == ConsoleKey.Enter)
            {
                parser.loadFiles(list, "txt");
            }
        }
    }
}
Далее необходимо:
1) выделить класс Parsing, сформировать из него библиотеку и откомпилировать в dll-файл.


2) Создать приложение
типа Winows Forms Application. не могу найти его в visual studio 2017 года?

3) Нужно создать интерфейс содержащий:
- текстовое поле для ввода адреса страницы (пусть там по умолчанию стоит
"https://pcoding.ru/darkNet.php"),
- текстовое поле (с параметром Многострочное) для отображения результата
загрузки всей страницы,
- кнопка для старта процесса парсинга, после парсинга в многострочном
поле отображается содержимое страницы,
- компонент комбобокс или листбокс для отображения списка доступных
для загрузки файлов,
- а также чекБокс для выбра всех файлов для загрузки,
- список доступных для загрузки типов файлов – он определяется по расширению (txt, pdf, rar, zip, vbs, dll, doc, docx) – желательно сделать так,
чтобы этот список формировался автоматически в процессе парсинга из
скачанных ссылок.

Как создать элементы понимаю, какой код в какой элемент вставить не могу разобраться. Заранее спасибо за помощь!

Добавлено через 27 минут
Второй пункт нашла, не полностью пакет был загружен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2019, 14:02
Ответы с готовыми решениями:

Переделать консольное приложение в Windows Form
Хочу признаться вам , совершенно не дружу с формами , для КП нужно к этому сделать Windows Form надеюсь на вашу помощь using System; ...

Переделать консольное приложение в Windows Form
Имеет консольное приложение, выполняющее построение гистограммы в Excel, нужно перевести его в windows form, помогите пожалуйста, только...

Как создать меню в Windows Form
Здравствуйте, подскажите как создать меню в форме. Есть элемент MenuStrip. При нажатии на пункт меню необходимо вывести группу элементов на...

8
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 34
10.09.2019, 14:43  [ТС]
Создала форму с элементами управления, не понимаю, что нужно сделать дальше(
Миниатюры
Создать приложение Windows Form  
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
10.09.2019, 14:55
tashika92, далее используйте класс код которого привели.

Вот здесь у Вас и пример использование:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            string url = "https://pcoding.ru/darkNet.php";
            Parsing parser = new Parsing(url);
            List<Parsing.Refer> list = parser.getReferences();
            foreach (var elm in list)
            {
                Console.WriteLine("{0}\t{1}", elm.innerHTML, elm.href);
            }
            Console.Write("\r\nСохранить выбранные файлы? (Enter-ДА/Escape-НЕТ)");
            ConsoleKeyInfo key;
            do
            {
                key = Console.ReadKey(true);
            }
            while (!((key.Key == ConsoleKey.Escape) || (key.Key == ConsoleKey.Enter)));
            if (key.Key == ConsoleKey.Enter)
            {
                parser.loadFiles(list, "txt");
            }
0
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 34
10.09.2019, 15:34  [ТС]
Не совсем понимаю как использовать этот класс. На данный момент форма имеет следующий код:


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
    }
}
Где, здесь нужно прописывать класс? Не знаю как работать с Windows Form. Cпасибо за ответ.
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
10.09.2019, 15:39
tashika92, ну можно в отдельном файле в обозреватели решений правой кнопкой по проекту => добавить =Ю> создать элемент. Или прямо так:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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 WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
    }
 
class Parsing
    {
        // поля
        private string url;
        private string content;
        // свойства
        public string Content
        {
            get { return this.content; }
        }
        // конструктор
        public Parsing(string _url)
        {
            this.url = _url;
            this.content = getContent();
        }
        // методы
        public void loadFiles(List<Parsing.Refer> list, string saveDir)
        {
            string pathApp = Directory.GetCurrentDirectory();
            Directory.CreateDirectory(saveDir); // подключите System.IO
            string pathSave = pathApp + "/" + saveDir + "/";
            WebClient webClient = new WebClient(); // подключите System.Net
            foreach (var elm in list)
            {
                webClient.DownloadFile(elm.href, pathSave + elm.innerHTML);
            }
        }
        private string getInnerHTML(string contentTag)
        {
            return contentTag.Split('>')[1].Trim();
        }
        private string getHref(string contentTag)
        {
            return contentTag.Split('>')[0].Trim().Split(' ')[0].Split('=')[1].Trim();
        }
        private bool checkHRef(string href)
        {
            return href.Split('.').Reverse().ToArray()[0] == "txt";
        }
        public List<Refer> getReferences()
        {
            List<Refer> list = new List<Refer>();
            int posLeft = 0, posRight = 0;
            string strLeft = "<a", strRight = "</a>";
            string contentTag; // всё содержимое тега a
            Refer temp;
            while (content.IndexOf(strLeft, posLeft) > 0)
            {
                posLeft = content.IndexOf(strLeft, posLeft) + strLeft.Length;
                posRight = content.IndexOf(strRight, posLeft);
                contentTag = content.Substring(posLeft, posRight - posLeft);
                temp.href = getHref(contentTag);
                temp.innerHTML = getInnerHTML(contentTag);
                if (checkHRef(temp.href)) list.Add(temp);
                posLeft = posRight;
            }
            return list;
        }
 
        private string getContent()
        {
            WebClient webClient = new WebClient();
            webClient.Encoding = Encoding.GetEncoding("utf-8");
            return webClient.DownloadString(this.url);
        }
        public struct Refer
        {
            public string href;
            public string innerHTML;
        }
 
        public string getFromTag(string findTag)
        {
            string result = ""; int posLeft = 0, posRight = 0;
            posLeft = content.IndexOf(findTag, posLeft) + findTag.Length;
            posRight = content.IndexOf(findTag, posLeft);
            result = content.Substring(posLeft + 1, posRight - posLeft - 3);
            return result;
        }
 
    }
}
1
.NET
133 / 91 / 44
Регистрация: 17.08.2015
Сообщений: 296
10.09.2019, 15:50
Цитата Сообщение от tashika92 Посмотреть сообщение
На данный момент форма имеет следующий код:
Добавляете в проект Class

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
 
namespace WindowsFormsApplication13
{
    class Parsing
    {
        // поля
        private string url;
        private string content;
        // свойства
        public string Content
        {
            get { return this.content; }
        }
        // конструктор
        public Parsing(string _url)
        {
            this.url = _url;
            this.content = getContent();
        }
        // методы
        public void loadFiles(List<Parsing.Refer> list, string saveDir)
        {
            string pathApp = Directory.GetCurrentDirectory();
            Directory.CreateDirectory(saveDir); // подключите System.IO
            string pathSave = pathApp + "/" + saveDir + "/";
            WebClient webClient = new WebClient(); // подключите System.Net
            foreach (var elm in list)
            {
                webClient.DownloadFile(elm.href, pathSave + elm.innerHTML);
            }
        }
        private string getInnerHTML(string contentTag)
        {
            return contentTag.Split('>')[1].Trim();
        }
        private string getHref(string contentTag)
        {
            return contentTag.Split('>')[0].Trim().Split(' ')[0].Split('=')[1].Trim();
        }
        private bool checkHRef(string href)
        {
            return href.Split('.').Reverse().ToArray()[0] == "txt";
        }
        public List<Refer> getReferences()
        {
            List<Refer> list = new List<Refer>();
            int posLeft = 0, posRight = 0;
            string strLeft = "<a", strRight = "</a>";
            string contentTag; // всё содержимое тега a
            Refer temp;
            while (content.IndexOf(strLeft, posLeft) > 0)
            {
                posLeft = content.IndexOf(strLeft, posLeft) + strLeft.Length;
                posRight = content.IndexOf(strRight, posLeft);
                contentTag = content.Substring(posLeft, posRight - posLeft);
                temp.href = getHref(contentTag);
                temp.innerHTML = getInnerHTML(contentTag);
                if (checkHRef(temp.href)) list.Add(temp);
                posLeft = posRight;
            }
            return list;
        }
 
        private string getContent()
        {
            WebClient webClient = new WebClient();
            webClient.Encoding = Encoding.GetEncoding("utf-8");
            return webClient.DownloadString(this.url);
        }
        public struct Refer
        {
            public string href;
            public string innerHTML;
        }
 
        public string getFromTag(string findTag)
        {
            string result = ""; int posLeft = 0, posRight = 0;
            posLeft = content.IndexOf(findTag, posLeft) + findTag.Length;
            posRight = content.IndexOf(findTag, posLeft);
            result = content.Substring(posLeft + 1, posRight - posLeft - 3);
            return result;
        }
    }
 
}
тыкаете два раза по кнопке и добавляете код в событие клика
C#
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
        {
            string url = textBox1.Text;
            Parsing parser = new Parsing(url);
            List<Parsing.Refer> list = parser.getReferences();
            foreach (var elm in list)
            {
                textBox2.AppendText(elm.href + "\r\n");
            }
        }
как то так
Миниатюры
Создать приложение Windows Form  
1
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 34
10.09.2019, 15:52  [ТС]
Sanya sa, спасибо! С классами поняла, а как сделать, чтобы при нажатии кнопки старт на моей форме начался сам парсинг? Мне внутри кода этой кнопки, что-то прописать нужно?
C#
1
2
3
4
 private void button1_Click(object sender, EventArgs e)
        {
 
        }
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
10.09.2019, 15:53
tashika92, выше уже ответил M1ke423)
1
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 34
10.09.2019, 15:59  [ТС]
M1ke423, спасибо! Кнопка заработала.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.09.2019, 15:59
Помогаю со студенческими работами здесь

Создать 5 классов и связать их в windows form
Нужно вообщем сделать отношение один-ко-многим и многие-ко-многим в Winform App. МНе нужен пример, готовая лабораторная работа по ООП. Хочу...

Как создать представителя класса, добавленного в проект Windows Form C#?
Добавил в проект новый класс в виде отдельного файла, теперь пытаюсь создать в основном коде его представителя Frag F = new Frag(); ...

Как и где создать метод, который будет доступен всем формам Windows Form?
Как и где создать метод, который будет доступен всем формам Windows Form.Хотел через Program.cs, не получилось

Создать многооконное Windows-приложение
Помогите пожалуйста сделать! Вроде бы с другого языка надо переписать.... Создать многооконное Windows-приложение, в меню которого должны...

Создать Windows приложение для сортировки массива в возрастающем и убывающем порядке, методом, указанным в варианте
Здравствуйте, помогите пожалуйста с делегатами. Вот задание: Создать Windows приложение для сортировки массива в возрастающем и убывающем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru