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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать большую DataTable, из формы в форму 
V
    Опции темы
Drabuna
  Дата 3.9.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



Есть большая DataTable заполненная данными. Представим что есть две формы. Форма1 это в форма в которой эта дататейбл создается, и программно заполняется данными, а вторая форма это форма(Форма2) просмотра этой дататейбл. Вооооооооот. Терь на форме1 есть волшебная кнопочка которая открывает форму2 и передает туда этот дата тейбл. 

Форма1:
Код

DataTable myTable=new DataTable();

/*Делаем страшные манипуляции с данными, и заполняем табличку */

private void showForm2_Click(object sender, EventArgs e)
{
  Form2 form2= new Form2();
  form2.mytable2= myTable;
  form2.Show();
}


Ну и форма2:
Код

public DataTable mytable2=new DataTable();

private void Form2_Load(object sender, EventArgs e)
{
  dataGridView1.DataSource = mytable2;
}


Вот. Естественно при такой манипуляции форма1 подвисает, а когда передаст весь дата тейбл то все ок. Сделал подобно в бэкграунд воркере но это ничего не изменило. Может кто то подскажет/поможет?)
PM MAIL   Вверх
diadiavova
Дата 3.9.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Попробуй что-то в этом роде. 
форма 1
Код

        public Form1()
        {
            InitializeComponent();
            form2.Closing += new CancelEventHandler(form2_Closing);
        }

        void form2_Closing(object sender, CancelEventArgs e)
        {
            e.Cancel=true;
            form2.Hide();
        }


       DataTable myTable=new DataTable();
       Form2 form2= new Form2() {mytable2= myTable};
      private void showForm2_Click(object sender, EventArgs e)
      {
           form2.Show();
      }


форма 2
Код

DataTable _mytable2;
public DataTable mytable2
{
    get
    {
        return mytable2;
    }
    set
    {
         mytable2 = value;
         dataGridView1.DataSource = value;
    }
}


Не знаю, всё ли правильно написал, но идея в том, чтобы форму 2 создать и инициировать один раз, а потом просто запускать один и тот же экземпляр.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Drabuna
Дата 3.9.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



Не так меня поняли) Мне надо как то сделать так чтобы при передачи таблицы форма не подвисала.
PM MAIL   Вверх
diadiavova
Дата 3.9.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Drabuna
Дата 3.9.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



Не подходит( Надо чтобы форма2 инициализировалась в момент нажатия на кнопку. А затем как то в другом потоке передавалась таблица. Хотя я делал через бэкграунд воркер и все равно форма1 висла.
PM MAIL   Вверх
diadiavova
Дата 3.9.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(Drabuna @  3.9.2009,  17:24 Найти цитируемый пост)
Надо чтобы форма2 инициализировалась в момент нажатия на кнопку.

Зачем?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Drabuna
Дата 3.9.2009, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



  Ну просто надо smile 
PM MAIL   Вверх
diadiavova
Дата 3.9.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Тогда не знаю. Чтобы помочь надо понимать задачу, а коль скоро я её не понимаю, то предложений больше нет smile


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Drabuna
Дата 6.9.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



Разобрался в чем проблема. Я нуб. Передача происходит моментально без всяких томрозов, я потом просто создавал список возможных фильтров пробегаясь по все таблице, что впринципе и заставляло долго думать.  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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