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

создание массива кнопок Visual C++ CLR

20.03.2010, 11:30. Показов 12320. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не подскажет кто как создать массив кнопок типа Button?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.03.2010, 11:30
Ответы с готовыми решениями:

Создание и запись данных в массив String на CLR C++ visual studio 2017
Добрый день,Я недавно начал изучать с++,вначале писал в консоли, сейчас начал писать в CLR, у меня вопрос в консоли создать массив можно...

Звук и границы кнопок в C++ CLR
На днях появились вопросы, на которые очень хотелось бы получить ответы. Первый коснулся музыки. Реализована ли как-то в WinForm работа с...

Clr/ visual c++
Здравствуйте. Есть стандартная форма "main.h" с разными элементами. В ней подключаю файл с класcом в котором хочу редактировать эти...

14
 Аватар для HIMen
4338 / 1507 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
20.03.2010, 12:09
C++ Скопировано
1
2
3
4
5
6
7
8
9
array<Button^>^ msv = gcnew array<Button^>(5);
for(int i = 0; i < msv->Length; i++)
{
    msv[i] = gcnew Button();
    msv[i]->Size = Drawing::Size(75, 23);
    msv[i]->Text = i.ToString();
    msv[i]->Location = System::Drawing::Point(40, 40 + 40 * i);
    Controls->Add(msv[i]);
}
2
 Аватар для Sen
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 21
20.03.2010, 14:55  [ТС]
HIMen, а двухмерный массив?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
20.03.2010, 16:41
Sen, создается таким же образом. Но вопрос, а какая принципиальная разница одномерный или двумерный, ведь все равно эти компоненты отображаются на форме одинаково даже если это N-мерный массив
0
 Аватар для Sen
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 21
20.03.2010, 18:24  [ТС]
M128K145, меня интересовал синтаксис.
0
 Аватар для HIMen
4338 / 1507 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
20.03.2010, 19:13
C++ Скопировано
1
array<Button^, 2>^ msv = gcnew array<Button^, 2>(5, 5);
1
 Аватар для Sen
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 21
21.03.2010, 10:55  [ТС]
пытаюсь вывести на форму массив кнопок 4 * 4
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                                array<Button^, 2>^ msv = gcnew array<Button^, 2>(4, 4);
                 int x = 0, y = 0, sizei = 4, sizej = 4;
                 for(int i = 0; i < sizei; i++)
                 {
                     for(int j = 0; j < sizej; i++)
                     {
                         msv[i][j] = gcnew Button();
                                                 msv[i][j]->Size = Drawing::Size(50, 50);
                         msv[i][j]->Text = i.ToString() + j.ToString();
                                                 msv[i][j]->Location = System::Drawing::Point(x,y);
                         x += 50;
                                                 Controls->Add(msv[i][j]);
                     }
                     x = 0;
                     int y += 50;
                 }
а компилятор выдает мне такую вот ошибочку
--------------------------------------------------------------------------
------ Построение начато: проект: NV, Конфигурация: Debug Win32 ------
Компиляция...
NV.cpp
ВНУТРЕННЯЯ ОШИБКА КОМПИЛЯТОРА в 'E:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe'
Выберите команду "Техническая поддержка" в меню "Справка" Visual C++ или
откройте справочный файл технической поддержки для получения доп. сведений
Проект : error PRJ0002 : Результат ошибки 2 возвращен из "E:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe".
Журнал построения был сохранен в "file://j:\H\C\function_array\NV\NV\Debug\BuildL og.htm"
NV - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

кто знает что это может быть?
0
 Аватар для HIMen
4338 / 1507 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
21.03.2010, 11:04
msv[i, j]
1
 Аватар для Sen
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 21
26.03.2010, 12:17  [ТС]
Как создать во время выполнения обработчик события, ну например Click и назначить его определенной кнопке или группе кнопок?
Или назначить уже существующий обработчик созданному объекту или кнопке.
0
dimorph
24.10.2010, 18:02
Добрый вечер1
Проблема в конструкции msv[i][j]->Text = i.ToString() + j.ToString(). Сам сталкивался с подобной проблемой, но пока не нашёл решение! Есть мысль что необходимо писать отдельный враппер класс в котором будет использоваться конструкция String^ a. В неуправляемом класс используется конструкция gcroot<string^> a, и при его использовании возникает такая фатальная ошибка!
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 16
30.01.2013, 21:45
Цитата Сообщение от HIMen Посмотреть сообщение
C++ Скопировано
1
2
3
4
5
6
7
8
9
array<Button^>^ msv = gcnew array<Button^>(5);
for(int i = 0; i < msv->Length; i++)
{
    msv[i] = gcnew Button();
    msv[i]->Size = Drawing::Size(75, 23);
    msv[i]->Text = i.ToString();
    msv[i]->Location = System::Drawing::Point(40, 40 + 40 * i);
    Controls->Add(msv[i]);
}
Подскажите пожалуйста, как обращаться в этому массиву из других функций. Например, этот массив объявляется в Form1_Load(...), и нужно изменить текст msv[2] из другой функции, например, Void button1_Click(...).
Пробую так:
msv[2]->Text = "123";
компилирует, но при нажатии (button1_Click) выдает ошибку: Ссылка на объект не указывает на экземпляр объекта.

Спасибо.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
30.01.2013, 22:39
Цитата Сообщение от gelidan Посмотреть сообщение
Подскажите пожалуйста, как обращаться в этому массиву из других функций. Например, этот массив объявляется в Form1_Load(...), и нужно изменить текст msv[2] из другой функции, например, Void button1_Click(...).
Пробую так:
msv[2]->Text = "123";
компилирует, но при нажатии (button1_Click) выдает ошибку: Ссылка на объект не указывает на экземпляр объекта.
Спасибо.
Объявите массив в форме, прямо среди объявлений других членов:
private: array<Button^>^ msv;

В событии (например OnLoad):
C++ Скопировано
1
2
3
4
5
6
7
8
9
msv = gcnew array<Button^>(5);
for(int i = 0; i < msv->Length; i++)
{
    msv[i] = gcnew Button();
    msv[i]->Size = Drawing::Size(75, 23);
    msv[i]->Text = i.ToString();
    msv[i]->Location = System::Drawing::Point(40, 40 + 40 * i);
    Controls->Add(msv[i]);
}
В любом событии следующим за событием с инициализацией обращайтесь.
1
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 16
01.02.2013, 19:02
Спасибо огромное!
Свой код крутил по всякому, наверно причина в этом была:
Цитата Сообщение от IGPIGP Посмотреть сообщение
В любом событии следующим за событием с инициализацией обращайтесь.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.02.2013, 21:57
Цитата Сообщение от gelidan Посмотреть сообщение
Спасибо огромное!
Свой код крутил по всякому, наверно причина в этом была:
Рад помочь. Однако судя по Вашему вопросу дело как раз в том, чтобы объявить массив с областью видимости: класс. Объявить нужно, так же как и в любом другом классе как поле класса, то есть в теле описания класса, ведь объявление в обработчике (Form1_Load()) видно только в нём. В этом обработчике удобно инициализировать.
0
 Аватар для Robesper3411
20 / 19 / 3
Регистрация: 20.02.2012
Сообщений: 535
Записей в блоге: 1
02.02.2013, 23:36
Создать обработчик событий
Похожая ситуация, нужно только заменить все picturebox на button.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2013, 23:36
Помогаю со студенческими работами здесь

Доступ к данным в консольном приложении CLR Visual C++
Доброго времени суток. Меня интересует следующая проблема. В VS 2012 создаю консольное приложение CLR Visual C++. Подключаюсь к базе...

Не видит класс. visual c++ 2013 CLR+WinForm
Задача реализовать класс дробь на c++ с интерфейсом WinForms. Создал CLR проект и в него добавил WinForm. Ниже добавил описание своего...

Подключение mouse_event в Visual C++ CLR Windows Forms
Пишу кликер - по нажатию на кнопку &quot;Перейти в точку&quot; - нужно переместить курсор на координаты x, y и кликнуть левой клавишей мыши. Писал...

Создание функции, рисующей FillRectangle. Visual c++ /clr
Visual c++ , Windows Forms. Пытаюсь создать функцию, которая бы рисовала FillRectangle. void paintrec (int x,int y) { ...

Создание массива кнопок
В общем, хочется сделать универсальный скрипт для кнопок, чтоб при добавлении новых предметов, нужно бы было просто закинуть объект и...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер