Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
cool999

Получение данных с программно созданных элементов

27.11.2011, 19:23. Показов 4937. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую следующий код для программного создания DataGridView.
Вопрос: Как теперь получить доступ к созданному элементу
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
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FirebirdSql.Data.FirebirdClient;
 
namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        DataGridView _grid;
        public Form1()
        {
            InitializeComponent();
 
            
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            DataGridView _grid = new DataGridView();
            _grid.Dock = DockStyle.Fill;
            _grid.AllowUserToAddRows = false;
            Controls.Add(_grid);
            _grid.Columns.Add(new DataGridViewTextBoxColumn());
            _grid.Columns[0].HeaderText = "TextBoxColumn";
            _grid.Columns.Add(new DataGridViewLinkColumn());
            _grid.Columns[1].HeaderText = "LinkColumn";
            _grid.Columns.Add(new DataGridViewButtonColumn());
            _grid.Columns[2].HeaderText = "ButtonColumn";
            _grid.Columns.Add(new DataGridViewCheckBoxColumn());
            _grid.Columns[3].HeaderText = "CheckBoxColumn";
            _grid.Columns.Add(new DataGridViewComboBoxColumn());
            _grid.Columns[4].HeaderText = "ComboBoxColumn";
            _grid.Columns.Add(new DataGridViewImageColumn());
            _grid.Columns[5].HeaderText = "ViewImageColumn";
 
            _grid.Rows.Add();
 
            for (int i = 0; i <= 3; i++)
            {
                DataGridViewRow heter_row = new DataGridViewRow();
 
                for (int j = 0; j < _grid.Columns.Count; j++)
                    heter_row.Cells.Add(new DataGridViewTextBoxCell());
 
                switch (i)
                {
                    case 0:
                        heter_row.HeaderCell.Value = "Value";
                        break;
                    case 1:
                        heter_row.HeaderCell.Value = "ValueType";
                        break;
                    case 2:
                        heter_row.HeaderCell.Value = "FormattedValue";
                        break;
                    case 3:
                        heter_row.HeaderCell.Value = "FormattedValueType";
                        break;
                }
 
                _grid.Rows.Add(heter_row);
            }
 
            // Заполнение строки 0
 
            DataGridViewRow row0 = _grid.Rows[0];
            row0.HeaderCell.Value = "Внешний вид ячейки";
 
            DataGridViewTextBoxCell cell0 = (DataGridViewTextBoxCell)row0.Cells[0];
            cell0.Value = "dotNET";
 
            DataGridViewLinkCell cell1 = (DataGridViewLinkCell)row0.Cells[1];
            cell1.Value = "RSDN.ru";
 
            DataGridViewButtonCell cell2 = (DataGridViewButtonCell)row0.Cells[2];
            cell2.Value = "Accept";
 
            DataGridViewCheckBoxCell cell3 = (DataGridViewCheckBoxCell)row0.Cells[3];
            cell3.Value = true;
 
            DataGridViewComboBoxCell cell4 = (DataGridViewComboBoxCell)row0.Cells[4];
            cell4.Items.AddRange(new string[] { "Trace", "Debug", "Release" });
            cell4.Value = "Release";
 
            DataGridViewImageCell cell5 = (DataGridViewImageCell)row0.Cells[5];
            cell5.ImageLayout = DataGridViewImageCellLayout.Zoom;
            cell5.Value = Image.FromFile(@"C:\1\1.bmp");
 
            // Заполнение строки 1
            for (int j = 0; j < _grid.Columns.Count; j++)
                _grid.Rows[1].Cells[j].Value = _grid.Rows[0].Cells[j].Value.ToString();
 
            // Заполнение строки 2
            for (int j = 0; j < _grid.Columns.Count; j++)
                _grid.Rows[2].Cells[j].Value =
                 _grid.Rows[0].Cells[j].ValueType.ToString();
 
            // Заполнение строки 3
            for (int j = 0; j < _grid.Columns.Count; j++)
                _grid.Rows[3].Cells[j].Value =
                  _grid.Rows[0].Cells[j].FormattedValue.ToString();
 
            // Заполнение строки 4
            for (int j = 0; j < _grid.Columns.Count; j++)
                _grid.Rows[4].Cells[j].Value =
                  _grid.Rows[0].Cells[j].FormattedValueType.ToString();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //int p = Convert.ToInt32(this._grid.CurrentRow.Cells[0].Value);
           /* DataGridViewComboBoxCell cell =
    (DataGridViewComboBoxCell)_grid.Rows[2].Cells[0];
            cell.Items.Clear();
            cell.Items.AddRange(new string[] { "ABC", "KLM", "XYZ" });*/
 
            DataGridViewComboBoxCell comboCell = (DataGridViewComboBoxCell)_grid.Rows[2].Cells[1];
 
            comboCell.Items.AddRange(new string[] { "VS2003", "VS2005", "MSDN", "RSDN" });
        }
    }
}
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2011, 19:23
Ответы с готовыми решениями:

Получение данных с программно созданных элементов
Программно создаю DataGridView И загружаю в него данные из базы данных. Вопрос: Как теперь получить с него значения полей чтоб удалить...

Получение данных от созданных кодом элементов
Здравствуйте. Имеется код. который создаёт checkBox-ы. Как получить результат, если пользователь их нажал? И вообще - как к ним...

Получение данных из программно созданных контролов
1. Получаю запросом из БД в дататейбл данные: &quot;наименование&quot;, &quot;тип контрола&quot;, &quot;Значение&quot; 2. В цикле для каждого значения программно...

26
cool999
24.12.2011, 12:49
Студворк — интернет-сервис помощи студентам
Вообщем подумал и решил что буду на компоненте "Panel" Создавать форму а уже в нее вставлять DataGridView через массив как вы посоветовали, а переключатся между формами буду кнопками на toolStrip которые будут создаваться вместе с формой. Только не где не могу найти как теперь на созданную кнопку добавить код.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
GridsArray[i] = new DataGridView();
            Form N1 = new Form();
            N1.TopLevel = false;
            N1.Dock = DockStyle.Fill;
            N1.Text = a + Convert.ToString(i);
            GridsArray[i].Parent = N1;
            GridsArray[i].Dock = DockStyle.Fill;
            GridsArray[i].AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            GridsArray[i].AllowUserToAddRows = false;
            GridsArray[i].AllowUserToDeleteRows = false;
            GridsArray[i].ReadOnly = true;
            GridsArray[i].AllowUserToOrderColumns = true;
            GridsArray[i].SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            GridsArray[i].Name = Convert.ToString(i);
           // GridsArray[i].DataSource = sel("SELECT * FROM C_CLIENTS WHERE NAME LIKE '%" + NameSel.Text + "%'");
            GridsArray[i].DataSource = sel("SELECT * FROM C_CLIENTS");
            ToolStripButton b1 = new ToolStripButton();
            b1.Name = Convert.ToString(i);
            b1.Text = a + Convert.ToString(i);
            toolStrip2.Items.Add(b1);
            N1.Show();
            panel1.Controls.Add(N1);
            i++;
T34
24.12.2011, 15:15
в тулстрипе есть событие нажатие на айтем (ItemClicked), вот туда и вещайте ваш обработчик

ToolStripItemClickedEventArgs e - передается в функцию по ней можно понять какая кнопка нажата
e.ClickedItem. Я бы список форм делал бы в комбо боксе но это уже нюансы...

Только вместо i сделайте переменную с длинным именем, а то потом на автомате воткнете ее в цикл и вся программа нагнется... также строку "a" просто так нельзя оставлять...
cool999
25.12.2011, 19:26
К примеру если я добавлю кнопку на форму и щелкаю на нее два раза то появляется
C#
1
2
3
4
private void button1_Click(object sender, EventArgs e)
        {
 
        }
и могу описать действие по нажатию кнопки
А если я пишу
C#
1
2
Button button1 = new Button();
button1.Parent = N1;
то как в этом случае это делать?
cool999
25.12.2011, 20:43
Цитата Сообщение от cool999 Посмотреть сообщение
К примеру если я добавлю кнопку на форму и щелкаю на нее два раза то появляется
C#
1
2
3
4
private void button1_Click(object sender, EventArgs e)
        {
 
        }
и могу описать действие по нажатию кнопки
А если я пишу
C#
1
2
Button button1 = new Button();
button1.Parent = N1;
то как в этом случае это делать?

С Этим разобрался сделал вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 private void Form1_Load(object sender, EventArgs e)
       {
            Button bt = new Button();
            bt.Name = "button";
            bt.Text = "Кнопка";
            bt.Left = 150;
            bt.Top = 15;
            bt.Click += this.bt_Click_1;
            this.Controls.Add(bt);
        }
 
        public void bt_Click_1(object sender, EventArgs e)
        {
 
            
            lb1.Name = "Label1";
            lb1.Text = "Лабел";
            lb1.Left = 200;
            lb1.Top = 200;
            this.Controls.Add(lb1);
 
        }
Только теперь не могу понять.
Когда я создаю форму она автоматически появляется под предыдущей
как сделать так чтоб форма при появлении была сверху остальных?
И можно ли как нибудь создать массив для форм, а то я не могу понять как теперь обращаться к ним из toolStrip
T34
26.12.2011, 02:30
Form [] FormArray;
... массив может быть чего угодно

думаю вам поможет метод Hide.
вам надо иметь указатель на текущую форму, и когда создается новая, текущую спрятать, а новую показать.

C#
1
bt.Click += this.bt_Click_1;
- так можно только после редакции фреймворка 4.0 кажется.

правильнее писать так

C#
1
bt.Click += new System.EventHandler(this.bt_Click_1) ;
хотя может и не правильнее, может надо быть современнее..
T34
26.12.2011, 02:38
вот только я чего то уже нить потерял%).
я так понимаю что у таблицы есть способ связаться с базой данных, вы эту таблицу кладете на форму, каждый раз подключая новые данные из базы, вы создаете новую форму с таблицей которая связывается с данными. Тут все логично, а зачем вы все формы запихали в 1 окно, ведь это равносильно тому что вы в 1 таблицу бы пихали выбранные данные? и не иметь возможности посмотреть 2 куска данных одновременно?
Сделайте чтобы каждая форма появлялась в своем окне самостоятельно.
GridsArray[i].DataSource - то же теряет смысл, на форме 1 таблица, не надо хранить массив форм и массив таблиц, они связаны, надо хранить массив форм, и через конкретную форму находить ту таблицу что лежит на ней.. или я уже чего то не понимаю?
cool999
26.12.2011, 05:44
http://narod.ru/disk/35539815001/Projects.rar.html
Вот проще наверное посмотреть
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2011, 05:44

Получение данных из динамически созданных edit ов
суть промблемы такая, создаю по нажатию кнопки этид поле, сколько нажму столько и создам, на поле присутствуют и статические эдиты, я...

Событие MouseClick для программно созданных элементов
Программно создал 62 picturebox'ов. Нужно обрабатывать событие л клика мыши по-каждому из них. Но как? Думал что нужно обрабатывать...

Получение значений(Text) из динамически созданных элементов(Edit)
Добрый день! Описание программы Есть одна проблемка. Есть Form1 на ней Button1 при нажатии на Button1 создается Form2. Form2 на OnShow ...

Изменение программно созданных TextBox по событию программно созданного CheckBox
Помогите пожалуйста! мне нужно разрешить изменение полей всех TextBox и разрешить нажимать на кнопку когда CheckBox нажат. public static...

Можно ли обеспечить взаимодействие программно созданных объектов и объектов, созданных мастером
Здравствуйте. Изучаю C# и ADO.NET и столкнулся с одной серьезной проблемой, которая мешает комфортно программировать. Часто...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru