Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/83: Рейтинг темы: голосов - 83, средняя оценка - 4.64
lich-soft
0 / 0 / 0
Регистрация: 08.10.2011
Сообщений: 60
1

Как открыть вторую форму?

26.10.2012, 11:54. Просмотров 15909. Ответов 13
Метки нет (Все метки)

Привет всем) решил вместе с Vb.net также изучить С++. столкнулся с такой не значительной прблемой, создал form2 и по некоторым урокам посморел и не нашол той информации которой мне надо.
В общем непонял как сделать:
1) как открыть через form1 - form2
2) как заменить стандартный значек (стандартно он именуеться как арр.ico)
3) объяснить как нормально добавить bgimg и куда сохраняеться изображение.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2012, 11:54
Ответы с готовыми решениями:

Открыть вторую форму из первой кнопкой
1>c:\users\name\documents\visual studio 2012\projects\проект4\проект4\MyForm.h(1): fatal error...

Как добавить вторую форму в проект?
Здравствуйте . Мне нужно сделать программу , с двумя формами . Чтобы при нажатии на кнопку в первой...

Как добавить кнопки на вторую форму?
Всем привет!=) Начинаю знакомиться с Windows Forms. На первую форму добавляю кнопочки ("Русские",...

Как открыть вторую форму в проекте
Я хочу создать второе окно,открывающееся через первое. Ничего не получается с этим...

Как открыть форму проекта?
Всем знатокам доброго времени суток! Никогда не писал код в С++, а тут нашел код, который мне...

13
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7417 / 3645 / 500
Регистрация: 04.12.2011
Сообщений: 10,354
Записей в блоге: 5
26.10.2012, 14:31 2
По поводу редактирования иконки, - смотрите редактор ресурсов. Можно в папке Resource Files кликнуть на ico-файле и редактор запустится. Как добавлять новую иконку посмотрите сами.
С формами же нужно повозиться, так как WinForm С++ отличаются в этом от C# и VB.
Сделаем изменение текста в форме1 из формы2:
1) Имеются 2 формы - Form1 и Form2, на Form1 располагаются Button (button1, будет открывать вторую форму) и Label (label1,
здесь будем менять текст). На Form2 - button1, по нажатию на которую будет происходить смена текста в label1.
2) Так как нам из первой формы нужно иметь доступ ко второй, а из второй к первой, то будет возникать проблема перекрестных
ссылок (когда Form1.h ссылается на Form2.h, который в свою очередь опять ссылается на Form1.h). Для того, чтобы этого
избежать, код первой формы (Form1), который будет иметь доступ ко второй форме (Form2) мы вынесем из h-файла в cpp файл.
Таким образом нужно создать файл Form1.cpp.
3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1:
C++
1
2
3
4
    public: void Set(String^ text)
    {
        label1->Text = text;
    }
4) В файле Form2.h подключаем Form1.h:
C++
1
2
3
4
5
6
7
8
9
#include "Form1.h"
//и создаем конструктор, который будет принимать и сохранять ссылку на первую форму для дальнейшего использования:
    Form2(Form1^ parent)
    {
        InitializeComponent();      
        parentForm = parent;
    }
    //...
    private: Form1^ parentForm;
По клику кнопки, будем вызывать метод Set родительской формы:
C++
1
2
3
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        parentForm->Text="hello from form2";
    }
5) Осталось в первой форме сделать открытие второй формы. Для этого из Form1.h обработчик нажатия кнопки переносим в
Form1.cpp, а в h-файле оставляем только его объявление:
C++
1
2
3
4
5
6
7
8
9
10
11
//Form1.cpp:
    #include "StdAfx.h"
    #include "Form1.h"
    #include "Form2.h"
    namespace testApp {//тут поставьте namespace Вашего проекта!
        System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
            Form2^ f2 = gcnew Form2(this);
            f2->Show();
            this->Hide();
        }
    }
В Form1.h (#include "Form2.h" там не нужен, - не будет работать) вставляем только:
C++
1
    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e);
На этом все. Можно скомпилировать и проверить проект.
5
lich-soft
0 / 0 / 0
Регистрация: 08.10.2011
Сообщений: 60
26.10.2012, 21:08  [ТС] 3
Ошибка 1 error MSB8009: .NET Framework 2.0/3.0/3.5 задают набор инструментов платформы v90. Убедитесь, что на данной машине выполнена установка Visual Studio 2008. C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 292
а что вот с этим делать?
0
kwim
5 / 5 / 0
Регистрация: 22.04.2013
Сообщений: 33
23.06.2013, 19:54 4
Нашел неточность:

C++
1
 parentForm->Text="hello from form2";
изменяет заголовок первой формы, чтобы изменить лабел1 нужно заменить этот код на

C++
1
parentForm->Set("hello from form2");
И нет смысла скрывать первую форму(в Form1.cpp пункт this->Hide(); можно удалить), мы же не увидим результат
0
23.06.2013, 19:54
Uffint
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 8
26.06.2013, 15:45 5
Можно еще проще-
создаем две формы (Form1 и F2)
в главной форме-Form1 подключаем вторую форму - вверху пишем #include"F2.h"
создаем кнопку в первой форме и по клику пишем
F2 ^f2= gcnew F2();
f2->ShowDialog();.
0
kwim
5 / 5 / 0
Регистрация: 22.04.2013
Сообщений: 33
26.06.2013, 17:06 6
Это если просто создать форму, а тут еще и передача данных во вторую форму описана.
2
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7417 / 3645 / 500
Регистрация: 04.12.2011
Сообщений: 10,354
Записей в блоге: 5
26.06.2013, 17:43 7
@kwim, верно. Причем, часто бывает, что форма нужна, чтобы ввести и передать что-то запускающему её окну.
Вот ещё ссылки:
Как сделать так, чтобы разные файлы могли видеть друг друга?
Ошибки при вызове форм - Syntax error
Как добавить кнопки на вторую форму?
2
Greedy_Boy
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 7
25.04.2015, 11:50 8
Не могли бы кто-нибудь объяснить как сделать подобное только для занесения информации в БД из Form2.
Вот что должно происходить по клику на кнопку во второй форме:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 try{
                 oleDbConnection1->Open();
                 oleDbInsertCommand1->CommandText="INSERT INTO Таблица1 (Участник,[Дата рождения],[Контактный телефон],E-mail,Произведение,Жанр) VALUES('"+textBox1->Text+"','"+textBox2->Text+"','"+textBox3->Text+"','"+textBox4->Text+"','"+textBox5->Text+"','"+comboBox1->Text+"')";
                 oleDbInsertCommand1->ExecuteNonQuery();
                 oleDbDataAdapter1->Update(dataSet1);
                 textBox1->Text="";textBox2->Text="";textBox3->Text="";textBox4->Text="";
                 textBox5->Text="";comboBox1->Text="";
                 oleDbDataAdapter1->Fill(dataSet1);
                 }
                 catch(Exception^Ситуация)
                 {
                     MessageBox::Show(Ситуация->Message,"Ошибка",MessageBoxButtons::OK,
                         MessageBoxIcon::Exclamation);
                 }
                 oleDbConnection1->Close();
             }
студия жалуется что oledbconnection и тому подобные идентификаторы не объявлены.
0
SergoMorello
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 17
20.04.2016, 23:09 9
IGPIGP, подскажите пожалуйста что может быть, всё сделал по вашему примеру из второго поста, но при нажитии на кнопку функция не выполняется, всё сделал в точности так же как в примере, проверил несколько раз, подскажите пожалуйста
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7417 / 3645 / 500
Регистрация: 04.12.2011
Сообщений: 10,354
Записей в блоге: 5
21.04.2016, 00:20 10
Цитата Сообщение от SergoMorello Посмотреть сообщение
всё сделал по вашему примеру из второго поста, но при нажитии на кнопку функция не выполняется
Если сделали всё в точности, то не должно скомпилироваться даже (нельзя копировать мой неймспэйс testApp а надо там указать свой). Поэтому не верю.
SergoMorello, посмотрите по всем темам, что я привожу тут и в темах. Там всего 5-7 тем. Если не получается, - покажите код.
0
Programist_NKPC
2 / 3 / 1
Регистрация: 21.05.2015
Сообщений: 90
26.09.2016, 14:17 11
Как сделать так, чтобы после реализации этого кода, можно было переходить между формами также, но только не с 1 на вторую и со второй на первую, а со второй на третью и с третьей на вторую
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7417 / 3645 / 500
Регистрация: 04.12.2011
Сообщений: 10,354
Записей в блоге: 5
26.09.2016, 18:12 12
Programist_NKPC, в приложении есть окно приложения, - это главное окно и самый логичный способ это связать данное окно со всеми дочерними. А дочерние имея связь с первым легко смогут передавать сообщения которые попадут в другие дочерние окна. То есть:
Цитата Сообщение от Programist_NKPC Посмотреть сообщение
, а со второй на третью
будет выглядеть 2 -> 1 -> 3
и
Цитата Сообщение от Programist_NKPC Посмотреть сообщение
третьей на вторую
соответственно: 3 -> 1 -> 2
0
Programist_NKPC
2 / 3 / 1
Регистрация: 21.05.2015
Сообщений: 90
26.09.2016, 18:55 13
У меня есть этот код полностью рабочий для форм 1 и 2. Но мне нужно, чтобы 3-я форма работала так же как и 2-ая, то есть было 2 кнопки: с 3-ей во вторую и со второй на третью. Я пробовал код изменять (цифры для форм), но выдавало ошибки, что уже такое создано и т.д. Меня интересует вопрос, что и куда нужно записать на форме 3, чтобы можно было вернуться на форму 2, а во второй, чтобы перейти на 3. Очень прошу написать код, чтобы я как можно лучше это всё понял, просто я почти начинающий
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7417 / 3645 / 500
Регистрация: 04.12.2011
Сообщений: 10,354
Записей в блоге: 5
26.09.2016, 19:03 14
Цитата Сообщение от Programist_NKPC Посмотреть сообщение
У меня есть этот код полностью рабочий для форм 1 и 2.
Programist_NKPC, беда в том, что Вы не понимаете как он работает и поэтому не можете написать для любого количества (конечного) форм. Для того чтобы с формой/классом общаться, его нужно создать снабдив средствами общения, затем создать экземпляр... Проследите внимательно тот вариант, который у Вас работает. Решить вопрос связи дочерних форм можно по-разному. Попробуйте разобрать мой предпоследний пост... хотя если поймёте про две, то сами как-то напишете и для любого количества..
0
26.09.2016, 19:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2016, 19:03

Как открыть одну форму из другой?
Нужно, что бы по вкл четбоксу открывалась Form2. Испробовал кучу способов и везде ошибки разные...

Как открыть одну форму из другой?
Здравствуйте! Создаю программу, необходимо из Формы 1, вызвать Форму 2. С этим я справился. Однако...

По нажатию кнопки открывать вторую форму
Имеется 2 формы, 1 форма что то типа авторизации, и необходимо что по нажатию кнопки воход...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru