Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/32: Рейтинг темы: голосов - 32, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 06.10.2009
Сообщений: 9

Вызов метода из другой формы

06.10.2009, 19:54. Показов 5896. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Волею судеб пришлось осваивать VC++ 2008.
Столкнулся с такой проблемой:
Есть класс Form1
В нем объявлен метод ComInit()
а также другой класс Config
В котором в свою очередь объявлен метод SaveConfig_Click()
Классы объявлены в разных файлах.
Необходимо вызвать метод ComInit() класса Form1 из метода SaveConfig_Click() класса Config .
И это не получается.
Никак не могу правильно указать вызов ComInit().
Код выглядит примерно так:

"Файл1.h"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void) { InitializeComponent(); }
protected:
 
~Form1() { delete components; }
private: System::Windows::Forms::MenuStrip^ menuStrip1;
public: System::Windows::Forms::Form^ Form2;
 
void InitializeComponent(void) {/* разное */}
 
public: System::Void конфигурацияToolStripMenuItem_Click(System::Object ^ sender, System::EventArgs^ e) {
Form2 = (gcnew Config());
this->Form2->Enabled = true;
this->Form2->ShowDialog(); }
 
public: bool ComInit(void); /*реализация в Файл1.cpp*/
}
"Файл2.h"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public ref class Config : public System::Windows::Forms::Form
{
public:
Config(void) { InitializeComponent();}
 
protected:
~Config() { delete components;}
private: System::Windows::Forms::Button^ SaveConfig;
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
this->SaveConfig = (gcnew System::Windows::Forms::Button());
}
private: System::Void SaveConfig_Click(System::Object^ sender, System::EventArgs^ e) {
ComInit(); //вот тут я и не могу правильно описать вызов!!!
Close();
}
}
Заранее благодарю за ответ!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2009, 19:54
Ответы с готовыми решениями:

Вызов формы из другой
Нужно из одной формы проекта вызвать другую и блокировать первую, затем, по закрытию второй, разблокировать первую. Из первой вторую я...

Вызов формы из другой формы
Что то не клеится....вроде не раз уже делал подобное, все стандартно DrawForm^ Form; Form=gcnew DrawForm; Form->Show(); ...

Вызов метода с другой формы
Здравствуйте, столкнулся с одной проблемой. В общем, нужно чтобы после закрытия второй формы, отрабатывался метод с первой. Вызов...

3
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
07.10.2009, 06:35
Поскольку Form1.ComInit() метод экземпляра, то необходимо, чтобы в экземпляр класс Config была передана ссылка на действующий Form1. Для этого можно или использовать доп. конструктор с параметром типа Form1 или свойство, такого же типа, которое бы устанавливалось в Form1.
Если использовать свойство (назовем MainForm), тогда примерно так:
В Form1 перед вызовом формы Config:
Code
1
myConfig.MainForm = this;
тогда в SaveConfig_Click:
Code
1
MainForm->ComInit();
1
0 / 0 / 0
Регистрация: 06.10.2009
Сообщений: 9
07.10.2009, 12:34  [ТС]
Спасибо!
Только все, что Вы пишите, я понимаю. Проблема в другом - именно это я сделать то и не могу... (15 лет Embedded C. Сами понимаете - совсем другой подход...). В классе Config я определяю:
C++
1
System::Windows::Forms::Form^ MainForm;
но теперь стоит задача сделать указатель на объект этого класса указателем на Form1. А именно это я и не могу сделать.
0
0 / 0 / 0
Регистрация: 06.10.2009
Сообщений: 9
07.10.2009, 15:53  [ТС]
Спасибо еще раз.
Разобрался...
Только несколько иначе.
В дочерней форме объявляю указатель на класс ФОРМА.
После инициализации второй формы, присваиваю этому указателю значение указателя родительской формы, далее по всем пунктам...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2009, 15:53
Помогаю со студенческими работами здесь

Вызов метода из экземпляра другой формы
Выручайте. Начал разбираться с c#. Проект расположен на двух формах. На первой форме при нажатии кнопки должна срабатывать процедура,...

Вызов метода формы из другой формы
Иногда у разработчика возникает необходимость вызывать какой-либо метод, определенный в форме из другой формы. Начинающих типа меня такая...

Передача имени формы в процедуру и в процедуре вызов метода объекта формы
Есть несколько форм: FrmMain, Frm2, Frm3. На каждой форме есть RichEdit под именем RchEdtLog. Нужна процедура Log которая должна...

Вызов одного метода через другой
Здравствуйте ! У меня такая проблема: есть событие нажатия на кнопку: private void NewGame_Click(object sender, EventArgs e) ...

Вызов метода show к одной форме из другой
Добрый день! Есть две формы, вторая запускается из первой, при этом первая скрывается методом Hide(). Вопрос: как по закрытию второй...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru