Аватар для Sen
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 21

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

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

Студворк — интернет-сервис помощи студентам
Не подскажет кто как создать массив кнопок типа 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
4340 / 1509 / 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
4340 / 1509 / 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
4340 / 1509 / 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
9007 / 4708 / 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
9007 / 4708 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
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
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru