Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление контрола на форму 
:(
    Опции темы
Legolas
Дата 21.7.2009, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Добрый вечер. Возник вопрос - можно ли как-то "передать контрол" при создании новой формы. 

пример: есть форма с заполненной датагридвью (или нарисованным графиком (ZEDGraph), при создании\вызове новой формы необходимо, чтобы данный контрол (ZEDGraph или датагридвью) прорисовался на новой форме с заполненными полями\нарисованным графиком.

пытался так, но эффект не достиг.
Код

private void zgc_var_max_DoubleClick(object sender, EventArgs e)
        {
            Form var_max_form = new Form();
            var_max_form.ShowDialog();

            var_max_form.Controls.Add(zgc_var_max);
        }



Это сообщение отредактировал(а) Legolas - 21.7.2009, 23:42
PM MAIL   Вверх
Экскалупатор
Дата 21.7.2009, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



Legolas, а зачем целый контрол передавать? не лучше ли "что бы мухи были отдельно от котлет"(данные отдельно, отображение отдельно), лучше передать содержимое, а в новой форме его просто показать в контроле этой формы.

Добавлено через 1 минуту и 45 секунд
кстати, просто ради интереса, а что вы делаете с этим контролом в новой форме? можете код показать?
PM MAIL ICQ   Вверх
Legolas
Дата 22.7.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



кода пока нет. просто у меня есть график маленького размера - я хочу по щелчку открывать его на новой форме. думаю вы предложили самое оптимальное решение - передавать данные. так и сделаю, зачем мутить что-то =))) 

спасибо.

PS: я вообще было бы интересно узнать можно ли передать заполненный контрол)))
и для чего вообще нужна Form.Controls.Add(...) - кроме как для создания нового.
тему пока не закрываю.

Добавлено через 11 минут и 57 секунд
всё, решил задачу. =))) 
PM MAIL   Вверх
Экскалупатор
Дата 22.7.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



Legolas, самому стало интересно. только что попробовал, кнопка передается без проблем, передается так же все что связано с этой кнопкой: обработчики, настройки, полностью все. получается прикольно.
обработчик кнопки в первой форме:
Код

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2(this.button1);
            form2.Show();
        }


добавление кнопки во второй форме:
Код

        public Form2(Control control)
        {
            this.Controls.Add(control);
            InitializeComponent();
        }


сделал через конструктор. 

Это сообщение отредактировал(а) Экскалупатор - 22.7.2009, 00:32
PM MAIL ICQ   Вверх
Legolas
Дата 22.7.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



теперь проблема заключается в том, что при добавлении контрола на новую форму он исчезает со старой - как это можно решить.

добавляю так:
Код

private void zgc_var_max_DoubleClick(object sender, EventArgs e)
        {
            zgc_show form = new zgc_show();
            form.Controls.Add(zgc_var_max);
            form.ShowDialog();
            
        }

PM MAIL   Вверх
Экскалупатор
Дата 22.7.2009, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



если сделать так то все работает и контрол не исчезает:
Код

        private void button1_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.Button button = new Button();
            button.Location = new System.Drawing.Point(111, 206);
            button.Name = "button";
            button.Size = new System.Drawing.Size(75, 23);
            button.TabIndex = 0;
            button.Text = "button";
            button.UseVisualStyleBackColor = true;
            button.Click += new System.EventHandler(this.button1_Click);
            Form2 form2 = new Form2(button);
            form2.Show();            
        }

тут смысл в том что бы именно создать новый контрол и его передать, а не тот что уже есть. интересно почему пропадает старый контрол при передаче. может CLR считает что это уникальный контрол и он может быть только один?

Это сообщение отредактировал(а) Экскалупатор - 22.7.2009, 01:58
PM MAIL ICQ   Вверх
Экскалупатор
Дата 22.7.2009, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



или это вопросы потокобезопасности... получается что каждаю форма это как отдельный поток, но почему пропадает?...
PM MAIL ICQ   Вверх
Legolas
Дата 22.7.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



да, странно... а нужно именно старый контрол передать как бы сделать копию старого. а получается как команда "вырезать" =))) можно конечно при закрытии формы попробовать его обратно передавать... но это изврат...

что-то мне кажется, что существует какой-то способ.. =) где же наши эксперты? =)

Это сообщение отредактировал(а) Legolas - 22.7.2009, 11:38
PM MAIL   Вверх
antslava
Дата 27.7.2009, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 16.7.2008
Где: Одесса

Репутация: нет
Всего: 2



Тебе надо отнаследовать свой контрол от ICloneable.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1049 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.