С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552

Событие по клику

26.02.2018, 12:07. Показов 1523. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код который создает groupBox в нем linklabel
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  for (int i = 0; i < 6; i++)
            {
                groupBox[i] = new GroupBox();
                groupBox[i].FlatStyle = FlatStyle.Flat;
                groupBox[i].Text = "Поставщик " + Convert.ToString(i + 1);
                groupBox[i].Width = 600;
                groupBox[i].Height = 50;
                groupBox[i].Location = new Point(12, 12 + 60 * i);
                linklabel[i] = new LinkLabel();
                linklabel[i].Text = "Подробнее";
                linklabel[i].Location = new Point(525, 20);// + 60 * i);
                linklabel[i].Width = 70;
                linklabel[i].LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
                groupBox[i].Controls.Add(linklabel[i]);
                Controls.Add(groupBox[i]);
 
            }
 
        }
        private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
          
        }
как реализовать событие по клику на конкретный label

Добавлено через 1 минуту
если делать так то события одинаковое для всех label
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2018, 12:07
Ответы с готовыми решениями:

Событие по клику на кнопке
На форме есть MenuStrip создаваемый через код, нужно чтобы на каждую кнопку повесилось событие которое будет например выводить сообщение...

Событие по клику на узел TreeView
Я вывожу результаты работы программы в TreeView. Потом надо сделать чтобы по клику на любой узел дерева открывалось окно с параметрами...

Событие распахивания формы по двойному клику по заголовку
Добрый день. Как отловить событие, когда пользователь дважды щелкнул по заголовку и окно растянулось на максимум (или вернулось к исходным...

26
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 12:16
menafis, в параметре object sender события ссылка на контрол в котором оно произошло.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 12:34  [ТС]
Usaga, можно по подробнее

Добавлено через 1 минуту
Usaga, object sender надо заменить на object linklabel[1] так получаеться
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 12:36
menafis, нужно sender привести к типу LinkLabel и уже дальше работать с данным контролом как вам надо.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 12:39  [ТС]
Usaga, вот так написал
C#
1
2
3
4
5
6
linklabel[0].LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
        }
        private void linkLabel1_LinkClicked(object linklabel1, LinkLabelLinkClickedEventArgs e)
        {
            new Form5().ShowDialog();
        }
только по первому label форма новая открывается.
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 12:40
menafis, что это?
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 13:02  [ТС]
Usaga, вот написал чтоб по клику только на первый лейбл происходило событие
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
linklabel[0].LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
        private void linkLabel_LinkClicked(object linklabel, LinkLabelLinkClickedEventArgs e)
        {
            for (int i = 0; i < groupBox.Length; i++)
            {
                groupBox[i].Visible = false;
            }
            GroupBox groupBox1 = new GroupBox();
            groupBox1.FlatStyle = FlatStyle.Flat;
            groupBox1.Text = "Поставщик ";
            groupBox1.Width = 600;
            groupBox1.Height = 50;
            groupBox1.Location = new Point(100, 100);
            groupBox1.Visible = true;
            Label label = new Label();
            label.Text = "Наименование";
            label.Width = 100;
            label.Location = new Point(20, 20);
            Label label1 = new Label();
            label1.Text = "X";
            label1.Width = 100;
            label1.Location = new Point(100, 70);
            groupBox1.Controls.Add(label);
            Controls.Add(groupBox1);
        }
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 13:04
menafis, это лютый говнокодище... Не обижайтесь.

Изначальная задача в чём заключалась?
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 13:09  [ТС]
Usaga, Изначальная задача такая, открывается приложение, парситься документ xml, из кол-во определенных элементов в xml, созадеться столько же groupbox с Linklabel, по нажатию определенного label происходить открытия создание нового group с определенными значениями.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 13:13  [ТС]
примерно так
Миниатюры
Событие по клику   Событие по клику  
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 13:15
menafis, ага, понятно. Некий вариант редактора делаете.

Рекомендую немного иной подход. Формируете внутреннее представление данных из документа в виде набора классов, данные вычитывать можно с помощью десериализации. Представление графическое документа формируете из набора пользовательских контролов (UserControl) по которым и будет распределён приведённый выше бардак из меток и GroupBox-ов.

Каждый контрол будет отвечать за редактирование своей части модели данных (представления документа).

Это единственный верный путь решения вашей задачи. А с текущим подходом вы просто утонете в мешанине контролов и говнокода.

Добавлено через 37 секунд
Почитайте-ка эту тему.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 13:20  [ТС]
Usaga, Докумены которые у нас есть они не скачены, то есть они на просторах интернета, мы по ссылки переходим на каждый документ и из него берем данные. а дессерилизация проводиться только по наличию скаченного документа так?
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 13:21
menafis, "переход по ссылке" и подразумевает скачивание. Или вы думаете, что данные сам образуются на машине, без скачки?

Вы получаете данные (не важно каким образом), десериализуете, и уже удобное программное представление документа раскладываете в форме.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 13:23  [ТС]
Usaga, я вас понял, тогда буду для начала разбираться в десерилизации
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 13:25
menafis, и разберитесь с созданием своих контролов (UserControls). Это сильно код упрощает и делает переиспользуемым.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 13:29  [ТС]
Usaga, вот классы xml которые сгенерила студия
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
/// <remarks/>
        [System.SerializableAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01")]
        [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01", IsNullable = false)]
        public partial class Documents
        {
 
            private DocumentsOwner ownerField;
 
            private DocumentsDocument documentField;
 
            private string[] textField;
 
            /// <remarks/>
            public DocumentsOwner Owner
            {
                get
                {
                    return this.ownerField;
                }
                set
                {
                    this.ownerField = value;
                }
            }
 
            /// <remarks/>
            public DocumentsDocument Document
            {
                get
                {
                    return this.documentField;
                }
                set
                {
                    this.documentField = value;
                }
            }
 
           
 
        /// <remarks/>
        [System.SerializableAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://fsrar.ru/WEGAIS/ProductRef")]
        [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://fsrar.ru/WEGAIS/ProductRef", IsNullable = false)]
        public partial class InformBItem
        {
 
            private string bRegIdField;
 
            /// <remarks/>
            public string BRegId
            {
                get
                {
                    return this.bRegIdField;
                }
                set
                {
                    this.bRegIdField = value;
                }
            }
        }
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 13:30
menafis, всё верно. Их можно немного "ужать" заменив свойства на автосвойства.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 13:39  [ТС]
Usaga, ок ,теперь запускаю десерелизацию то есть
C#
1
2
3
4
5
6
7
8
XmlSerializer formatter = new XmlSerializer(typeof(Documents[]));
            using (FileStream fs = new FileStream("C:\\test\\doc.xml", FileMode.OpenOrCreate))
            {
                Documents[] newPerson = (Documents[])formatter.Deserialize(fs);
 
                listBox1.Items.Add("Объект десериализован");
                listBox1.Items.Add(newPerson);
            }
ошибка InvalidOperationException: <Documents xmlns='http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01'> не ожидался.
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
26.02.2018, 13:40
menafis, XML валидный? Как его "шапка" выглядит?
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 552
26.02.2018, 14:05  [ТС]
Usaga, <?xml version="1.0"?>

Добавлено через 1 минуту
XML
1
2
3
<?xml version="1.0"?>
 
+<ns:Documents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:iab="http://fsrar.ru/WEGAIS/ActInventoryABInfo">
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2018, 14:05
Помогаю со студенческими работами здесь

Событие по клику
Доброго времени суток. На данный момент изучаю javascript, и вот возникло нечто таоке. Событие по клику. Прилагаю код. Он не работает....

Событие по клику
Здравствуйте Уважаемые форумчане и гуру форума , я новичок в программировании поэтому прошу сильно не пинать, у меня такой вопрос, открытие...

Событие по клику ячейки
Уважаемые! Не откажите в любезности кто знает. Есть ли такое событие, которое можно использовать для определения координат ...

Событие по клику contextMenuStrip
Заполняю контекстное меню динамически, из содержимого listbox. contextMenuStrip1.Items.Add(&quot;menu1&quot;); ...

Событие по клику внутри элемента
Всем привет! Есть JS: //Здесь по клику передаётся id элемента в обработчик redact.php и данные появляются в скрытом div(который...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru