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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2016, 11:30   #1
kirill1507
Пользователь
 
Регистрация: 05.03.2016
Сообщений: 11
По умолчанию Блок редактирования первой формы через вторую- C++/CLI Windows Forms

Всем привет! Нужна помощь! Делаю анкету опросник, в которой есть возможность редактирования вопросов.
1.png
При нажатии "редактор" запускается новая форма редактирования
2.jpg
Содержимое label,т.е. вопросов решил объявить глобально в заголовочном файле
3.png
Вот программный код фала 1.cpp
#include"stdafx.h"
char vopros[1][50]={"Сколько Вам лет?"};
программный код фала 1.h
extern char vopros;

В коде первой и второй формы произвожу подключение #include"1.h"
Form1 при запуске
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
label1->Text=vopros[1];
}
Form2 при выборе первого значения из comboBox1
private: System::Void comboBox1_SelectedIndexChanged(Syst em::Object^ sender, System::EventArgs^ e) {
if (comboBox1->SelectedIndex == 0) {
label2->Text="Вопрос № 1";
textBox1->Text=vopros[1];
}
}
Вроде бы все правильно прописал, но появляются ошибки вот такого типа
4.jpg
kirill1507 вне форума Ответить с цитированием
Старый 05.03.2016, 11:57   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Наверно в extern надо тип правильно указывать. Что-нибудь типа char** вместо просто char (один символ).


Не надо делать скриншот с текстом ошибок компилятора, это ж текст, его скопировать можно.
И используйте тег [CODE] для вставки кода на форум.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.03.2016, 11:58   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

От нас требуется догадаться что находится в файле FromSetting.h на 173 строке?
waleri на форуме Ответить с цитированием
Старый 05.03.2016, 12:23   #4
kirill1507
Пользователь
 
Регистрация: 05.03.2016
Сообщений: 11
По умолчанию

Waleri, в строчке 173 находится
Код:
	 textBox1->Text=vopros[1];

Последний раз редактировалось kirill1507; 05.03.2016 в 12:30.
kirill1507 вне форума Ответить с цитированием
Старый 05.03.2016, 12:32   #5
kirill1507
Пользователь
 
Регистрация: 05.03.2016
Сообщений: 11
По умолчанию

Alex11223, попробовал, и во что в итоге получилось
2формы.cpp
1>2формы.cpp(3): warning C4005: __CLR_VER: изменение макроопределения
1> аргументы командной строки: см. предыдущее определение "__CLR_VER"
1>2формы.cpp(3): warning C4651: параметр "/D__CLR_VER=40030319" указан для предкомпилированного заголовка, но не для текущей компиляции
1>c:\users\hp\documents\visual studio 2010\projects\2формы\2формы\FormSet ing.h(173): error C2664: void System::Windows::Forms::Control::Te xt::set(System::String ^): невозможно преобразовать параметр 1 из "char *" в "System::String ^"
1> Оператор определенного пользователем преобразования недоступен, или
1> Нельзя преобразовать неуправляемый тип в управляемый тип
1> FormSeting.cpp
1>FormSeting.cpp(1): warning C4005: __CLR_VER: изменение макроопределения
1> аргументы командной строки: см. предыдущее определение "__CLR_VER"
1>FormSeting.cpp(1): warning C4651: параметр "/D__CLR_VER=40030319" указан для предкомпилированного заголовка, но не для текущей компиляции
1>c:\users\hp\documents\visual studio 2010\projects\2формы\2формы\FormSet ing.h(173): error C2664: void System::Windows::Forms::Control::Te xt::set(System::String ^): невозможно преобразовать параметр 1 из "char *" в "System::String ^"
1> Оператор определенного пользователем преобразования недоступен, или
1> Нельзя преобразовать неуправляемый тип в управляемый тип
kirill1507 вне форума Ответить с цитированием
Старый 05.03.2016, 12:42   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
gcnew String(vopros[1]);
наверно надо или что-то типа того.

Или сразу делайте массив System::String (.NET-овские строки) вместо char* (С строки).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.03.2016, 13:30   #7
kirill1507
Пользователь
 
Регистрация: 05.03.2016
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Код:
gcnew String(vopros[1]);
наверно надо или что-то типа того.

Или сразу делайте массив System::String (.NET-овские строки) вместо char* (С строки).


Что то не получается, можете посмотреть? Программа в файлах,Сделал два архива, нужно соединить в один
Вложения
Тип файла: zip 2формы1.zip (676.7 Кб, 7 просмотров)
Тип файла: zip 2формы2.zip (819.1 Кб, 11 просмотров)

Последний раз редактировалось kirill1507; 05.03.2016 в 13:58.
kirill1507 вне форума Ответить с цитированием
Старый 05.03.2016, 13:49   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Куда смотреть-то?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.03.2016, 14:00   #9
kirill1507
Пользователь
 
Регистрация: 05.03.2016
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Куда смотреть-то?
Вложение, два архива нужно разархивировать в одну папку
kirill1507 вне форума Ответить с цитированием
Старый 05.03.2016, 14:31   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не, так неинтересно, сам смотри.
Ошибка выше о том, что массив char ("С строка") это не тоже самое, что экземпляр класса String из .NET, и надо преобразовать первое во второе.
Там вроде есть конструктор принимающий char* https://msdn.microsoft.com/en-us/lib...=1&cs-lang=cpp, так что gcnew String(массиив_char) наверно должно работать.

А еще лучше не писать на С++ для .NET, а взять C#, это намного проще и там нет кучи разных видов строк и прочей путаницы с наследием из С/С++.
Смысл использовать C++/CLI может быть только для специфичных задач о связывании чистого С++ кода и .NET сборок.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ CLI Forms AGS17 Общие вопросы .NET 1 30.10.2013 22:42
Windows Forms c++ как через кнопку вызвать PictureBox diga666 Windows Forms 1 27.05.2013 14:51
DirectInput и джойстик (C++/CLI, Windows Forms) Vistaern Win Api 1 21.02.2013 06:48
Проблема с выделением памяти в глобальной области windows forms(C++\CLI) DartLenin Помощь студентам 2 24.01.2012 20:58
Проблема с отображением русского языка (Windows Forms C++ CLI) Alex TGM Помощь студентам 0 17.08.2010 11:13