Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 03:42   #1
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию Выполнить метод первой формы во второй

Задача у меня такая. На форме2(форма дочерняя) создан dataGridView, который благополучно заполнен данными из бд. Из меню основной формы, вызывается форма3, в которой пользователь вводит данные и нажав на кнопочку сохранить, благополучно их сохраняет, а форма3 закрывается. Так вот мне нужно, чтобы после нажатия на эту кнопку и занесения данных в бд обновился dataGridView на форме2, фактически заполнился заново. Заполняется он у меня при открытии формы2 таким методом:
Код:
 this.dossierTableAdapter.Fill(this.imexDataSet.dossier);
и понятно, что если поместить на форму2 кнопку, например "Обновить" и в обработчик прописать данный метод, то все хорошо обновиться, но мне то надо, чтобы это происходило при нажатии на кнопку формы3! Понятно, что просто прописать его в обработчике кнопки формы3, не получиться, он там не виден.
Поделитесь кто знает, как это реализовывается.
Заранее благодарен!
maryan.vetrov вне форума Ответить с цитированием
Старый 15.02.2011, 09:17   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Самый простой вариант-это передать Form2(т.е. ту,которая открыта) в конструкторе Form3.
Примерно так:
Код:
 
public partial class Form3 : Form
    {
        private Form2 frm;

        public Form3(Form2 form)
        {
           frm=form;
        }
        ......
       public Form3_Close()
        {
          frm.dossierTableAdapter.Fill(frm.imexDataSet.dossier);
        }
     }
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 15.02.2011, 13:32   #3
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение
Самый простой вариант-это передать Form2(т.е. ту,которая открыта) в конструкторе Form3.
Примерно так:
Код:
 
public partial class Form3 : Form
    {
        private Form2 frm;

        public Form3(Form2 form)
        {
           frm=form;
        }
        ......
       public Form3_Close()
        {
          frm.dossierTableAdapter.Fill(frm.imexDataSet.dossier);
        }
     }
Возникает следующая ошибка: Ошибка 2 "WindowsFormsApplication1.form2.dos sierTableAdapter" недоступен из-за его уровня защиты"
Как с этим бороться?
maryan.vetrov вне форума Ответить с цитированием
Старый 15.02.2011, 13:38   #4
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение
Код:
 

   
        ......
       public Form3_Close()
        ......
Студии не нравиться эта строка, говорит, что метод должен иметь тип возвращаемого значения.
maryan.vetrov вне форума Ответить с цитированием
Старый 15.02.2011, 19:09   #5
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Ну описался: public void Form3_Close().
Я же написал пример, Вы должны реализовывать исходя из Вашей задачи.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 15.02.2011, 20:55   #6
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение
Ну описался:.....
Благодарю, сам туплю. Еще один косяк остался, и спрятался он в коде родительской формы, а именно там, где запускается эта самая form3
вот код:

Код:
private void Form3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
            Form3 newMDIChild = new Form3();
            newMDIChild.MdiParent = this;
            newMDIChild.Show();
        }
Так вот строка
Код:
Form3 newMDIChild = new Form3();
Студию не устраивает, пишет "WindowsFormApplication1.Form3" не содержит конструктор, который принимает значение "0".

Если можно поясните, что это значит и что с этим делать.
Благодарю.
maryan.vetrov вне форума Ответить с цитированием
Старый 15.02.2011, 22:03   #7
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Мы поменяли конструктор третьей формы.
Код:
 public Form3(Form2 form)
Поэтому надо передавать ссылку на вторую форму в третью:
Код:
 Form3 newMDIChild = new Form3(____ЗДЕСЬ ВТОРАЯ ФОРМА___);
Вот и все..
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 15.02.2011, 22:29   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Singleton
BOBAH13 вне форума Ответить с цитированием
Старый 15.02.2011, 22:37   #9
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

to BOBAH13,Singleton не пользовался до сих пор, только слышал о нем. Можно и делегат использовать(что есть самое правильное),но речь о простоте..)).
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 15.02.2011, 22:42   #10
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение

Поэтому надо передавать ссылку на вторую форму в третью:
Код:
 Form3 newMDIChild = new Form3(____ЗДЕСЬ ВТОРАЯ ФОРМА___);
Вот и все..
Т.е. вы хотите сказать, что это должно быть так:
Код:
Form3 newMDIChild = new Form3(form2);
, но выдает ошибку, что form2 - тип, используется, как переменная!
maryan.vetrov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить все символы между первой и второй двокрапкой. Wild_klas Помощь студентам 3 20.11.2010 21:57
показ второй формы при создании первой (Delphi) Izlom Помощь студентам 4 01.06.2010 15:57
ламер: выполнение процедуры, описанной в первой форме - из второй формы spiritos Помощь студентам 4 31.03.2010 15:12
начало второй нарисованной линии должно передвинутся к началу первой. Delphi maddamo4ka Помощь студентам 7 08.12.2008 19:19
Удалить из второй строки те слова, которые есть в первой строке innaa639 Паскаль, Turbo Pascal, PascalABC.NET 2 26.11.2008 15:43