11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
1

Как создать экземпляр класса динамически?

15.12.2014, 09:18. Показов 1889. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые!
Существует пустая форма. Мне надо динамически, по нажатию кнопки, например(ну форма с одной кнопкой), добавить на нее DataGridView и BindingNavigator, таких пар(DataGridView и BindingNavigator) может быть несколько, т.е. несколько добавлений. Подскажите, каким методом можно это сделать. Я думала, что можно сделать из этих двух элементов (DataGridView и BindingNavigator) единый класс и добавлять уже новые экземпляры этого класса. Правильно ли я мыслю?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2014, 09:18
Ответы с готовыми решениями:

Динамически создать экземпляр объекта, тип которого передан функции
Здравствуйте, дорогие коллеги. Прошу вашей компетентной помощи, может быть кто-то сталкивался с...

Как динамически создать компонент, видимый из всего класса формы
Динамически создаю Label: private void Form1_Load(object sender, EventArgs e) { Label...

Как передать Экземпляр Класса в SubWindow?
Привет всем, Имею следующий public class: ABC MainWindow: public ABC abc = null;

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

8
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
15.12.2014, 09:28 2
Ответы на 7 самых частых вопросов по WinForms
0
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
15.12.2014, 10:08  [ТС] 3
nio, то есть вы предлагаете использовать пункт 4 или 5? Разве нельзя создать новый контрол на основе базового класса контрола?
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
15.12.2014, 11:12 4
Цитата Сообщение от carga2 Посмотреть сообщение
вы предлагаете использовать пункт 4 или 5?
carga2, я имел в виду 4 пункт.
Цитата Сообщение от carga2 Посмотреть сообщение
Разве нельзя создать новый контрол на основе базового класса контрола?
На сколько я понял из первого поста речь шла не о создании нового контрола, а о динамическом размещении на форме некоего контрола в процессе выполнения программы. Для этого разрабатывать новый контрол не обязательно, всё будет выполнятся одним методом. (перечитал ещё раз, и понял, что был невнимателен)

Можно конечно унаследоваться от DataGridView, и прописать для него в момент создания размещение на родительском контейнере BindingNavigator'а.
Также можно сделать UserContol с размещением на нём этих элементов управления. И с Dock = Fill для DataGridView.

Создание собственного контрола оправдано, если предполагается, что востребованность в нём не единична. Если же предполагается использовать его и в других проектах, то правильнее будет делать этот элемент управления в виде отдельного проекта и компиляцией в dll.
0
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
15.12.2014, 13:27  [ТС] 5
Цитата Сообщение от nio Посмотреть сообщение
Можно конечно унаследоваться от DataGridView, и прописать для него в момент создания размещение на родительском контейнере BindingNavigator'а.
Также можно сделать UserContol с размещением на нём этих элементов управления. И с Dock = Fill для DataGridView.
я чуть-чуть поняла, но можно фрагмент кода, пожалуйста
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.12.2014, 08:29 6
Цитата Сообщение от carga2 Посмотреть сообщение
можно фрагмент кода, пожалуйста
Код контрола
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class DGWwithBS : UserControl
    {
        public object DataSource //это единственное свойство написанное руками, всё остальное сделано мышкой (сгенерировано студией)
        {
            get { return bindingSource1.DataSource; }
            set { if (bindingSource1.DataSource != value) bindingSource1.DataSource = value; } 
        }
 
        public DGWwithBS()
        {
            InitializeComponent();
        }
    }
}
Код дизайнера этого контрола
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
namespace WindowsFormsApplication1
{
    partial class DGWwithBS
    {
        /// <summary> 
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
 
        /// <summary> 
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
 
        #region Component Designer generated code
 
        /// <summary> 
        /// Required method for Designer support - do not modify 
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.dataGridView1 = new System.Windows.Forms.DataGridView();
            this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
            this.SuspendLayout();
            // 
            // dataGridView1
            // 
            this.dataGridView1.AutoGenerateColumns = false;
            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dataGridView1.DataSource = this.bindingSource1;
            this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.dataGridView1.Location = new System.Drawing.Point(0, 0);
            this.dataGridView1.Name = "dataGridView1";
            this.dataGridView1.Size = new System.Drawing.Size(544, 327);
            this.dataGridView1.TabIndex = 0;
            // 
            // DGWwithBS
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this.dataGridView1);
            this.Name = "DGWwithBS";
            this.Size = new System.Drawing.Size(544, 327);
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
            this.ResumeLayout(false);
 
        }
 
        #endregion
 
        private System.Windows.Forms.DataGridView dataGridView1;
        private System.Windows.Forms.BindingSource bindingSource1;
    }
}
1
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.12.2014, 08:35 7
Вот файлы. Можно просто добавить в проект, только нужно проверить чтоб пространство имён совпало, ну или просто подключить его (пространство имён)
Вложения
Тип файла: rar WindowsFormsApplication1.rar (2.8 Кб, 3 просмотров)
1
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
16.12.2014, 09:40  [ТС] 8
nio, спасибо огромное, я попробую позже и обязательно напишу!
0
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
17.12.2014, 15:55  [ТС] 9
nio, спасибо, работает)
0
17.12.2014, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2014, 15:55
Помогаю со студенческими работами здесь

Как создать экземпляр класса библиотеки
есть сервер создаю прослушку ChannelServices.RegisterChannel(new HttpChannel(60000)); ...

Как вместо ссылки на экземпляр класса передать поле класса?
Делаю свою шаблонную функцию для свойств с событиями, при обращении к таким свойствам приходится...

Создать экземпляр класса Graphics для метода в своём классе
Всем привет.Делаю графический редактор,нужно,чтобы отрисовывались на контроле picturebox линии из...

Создать экземпляр класса, чье имя хранится в строковом виде
В общем проблема следующая: Есть таблица, которая хранит названия классов, в зависимости от того...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru