Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
 Аватар для Robesper3411
20 / 19 / 3
Регистрация: 20.02.2012
Сообщений: 535
Записей в блоге: 1

Создать picturebox по клику

07.03.2012, 13:00. Показов 2981. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такова:
При нажатии кнопки - создать picturebox, при этом чтобы при каждом последующем нажатии создавался новый picturebox, стоящий рядом с предшественником. То есть чтобы они стояли все в рядок.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.03.2012, 13:00
Ответы с готовыми решениями:

Как открыть диалоговое окно по клику в PictureBox?
Добрый вечер! Есть PictureBox с картинкой. Нужно чтобы при клике на него открывало или в новом диалоговом окне, или в другой форме...

Создать несколько копий PictureBox
Добрый день. На форме имеется один PictureBox с картинкой. Как сделать чтобы при клике на него появлялся второй точно такой же...

Как остановить GIf анимацию в PictureBox по клику на сам PictureBox?
Добрый день! Прошу помочь решить вопрос с GIF анимацией в PictureBox. Задумка такова: Проигрывается гифка и при клике на на...

9
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.03.2012, 02:15
Robesper3411, как вариант, можете создать список, в который при каждом клике добавлять пикчебокс, задавать все необходимые свойства, вычислять его положение на форме, а после добавлять его на форму
0
 Аватар для Robesper3411
20 / 19 / 3
Регистрация: 20.02.2012
Сообщений: 535
Записей в блоге: 1
08.03.2012, 11:25  [ТС]
M128K145, а можете привести пример, если не трудно?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
08.03.2012, 16:22
Цитата Сообщение от Robesper3411 Посмотреть сообщение
M128K145, а можете привести пример, если не трудно?
Попробуйте создать пустую форму размером, скажем 300х300. В левом верхнем углу - кнопку 30х30.
В событии Click для кнопки напишите:
C++
1
2
this->button1->Location->X=+10;
this->button1->Location->Y=+10;
Покликайте и посмотрите. Это простая иллюстрация программного управления положением графического объекта.
0
 Аватар для Robesper3411
20 / 19 / 3
Регистрация: 20.02.2012
Сообщений: 535
Записей в блоге: 1
08.03.2012, 19:52  [ТС]
IGPIGP, с размещением элемента (координаты) задать - проблем нет, прописать событие для button тоже. Пока что проблема в другом:
Как произвести инициализацию. Чтобы создавался picturebox1, picturebox2, picturebox3 в цикле и т.д.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
08.03.2012, 21:40
Цитата Сообщение от Robesper3411 Посмотреть сообщение
Как произвести инициализацию. Чтобы создавался picturebox1, picturebox2, picturebox3 в цикле и т.д.
Попробовал разобраться, но сегодня не тот день
Есть сложности, с указателем на функцию onPaint класса Paint, причём ИМХО предвидится довольно кривая логика управления отрисовкой, даже если это решаемо...
Я бы посоветовал многооконый подход: - одно дочернее MDI окно - один рисунок. Прозрачно, ровно и хорошо... Причем в сэмплах 2008-й есть пример scrimble_test, где так и делается.
Правда, проект там с отделением объявления от определения и дизайнер формы - досвидания, но это к слову...
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.03.2012, 21:40
Вот небольшой пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#pragma once
 
 
namespace ComponentsList {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections::Generic;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    public ref class DemoForm : public System::Windows::Forms::Form
    {
    public:
        DemoForm(void)
        {
            InitializeComponent();
            picBoxes= gcnew List<PictureBox^>();
 
        }
 
    protected:
        ~DemoForm()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    protected: 
 
 
    private:
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
 
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
 
            this->button1->Location = System::Drawing::Point(1, 1);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(475, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"Create New PictureBox";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &DemoForm::button1_Click);
 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(477, 396);
            this->Controls->Add(this->button1);
            this->Name = L"DemoForm";
            this->Text = L"Demo";
            this->ResumeLayout(false);
 
        }
#pragma endregion
    private: List<PictureBox^>^ picBoxes;
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 PictureBox^ picBox = gcnew PictureBox();
                 picBox->Name = "PictureBox" + picBoxes->Count;
                 picBox->Size =  System::Drawing::Size(25, 25);
                 if(picBoxes->Count == 0) {
                     picBox->Location = System::Drawing::Point(1, 25);
                 } 
                 else {
                     Point prevLocation = picBoxes[picBoxes->Count - 1]->Location;
                     if(prevLocation.X + 25 < this->Width - 10){
                         picBox->Location = Point(prevLocation.X + 25, prevLocation.Y);
                     }
                     else if(prevLocation.Y + 25 < this->Height - 50){
                         picBox->Location = Point(1, prevLocation.Y + 25);
                     }
                     else {
                         MessageBox::Show("Can't put this PictureBox", "Click");
                     }
                 }
                 picBox->BackColor = Color::Red;
                 picBox->Click += gcnew System::EventHandler(this, &DemoForm::picBoxClick);
                 picBoxes->Add(picBox);
                 this->Controls->Add(picBox);
             }
 
    private: System::Void picBoxClick(System::Object^  sender, System::EventArgs^  e) {
                 MessageBox::Show(((PictureBox^)sender)->Name, "Click");
             }
    };
}
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
08.03.2012, 21:58
Цитата Сообщение от M128K145 Посмотреть сообщение
небольшой пример
Интересно. А как добавить onPaint ? Создать один picterBox статически и добавить его onPaint всем? А уже внутри него отрисовывать в зависимости от того кто вызвал?
Сомнения в том, что там же имя функции, например pictureBox1_Paint(........)...? Или это значения не имеет?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.03.2012, 22:54
Цитата Сообщение от IGPIGP Посмотреть сообщение
Сомнения в том, что там же имя функции, например pictureBox1_Paint(........)...? Или это значения не имеет?
посмотрите как я добавил OnCLick
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
08.03.2012, 23:53
Спасибо, обязательно попробую!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.03.2012, 23:53
Помогаю со студенческими работами здесь

Сравнение Picturebox' ов по клику
Привет всем! хочу сделать наподобие игрушку. создал пикчабоксы как можно все это сделать через рандом? массив цифр...

Передвижение Picturebox-ов по клику
У меня на форме есть 36 Picturebox-в. При нажатии на один из них, должны передвигаться по X и Y(в пределах квадрата 3x3) компоненты...

Отобразить картинку в PictureBox по клику
подскажите как реализовать код, чтобы при нажатии на ріcturebox , в последнем отображалась нужная мне картинка х, не в функции private...

Рисование окружности по клику в Picturebox
Здравствуйте, как нарисовать окружность, кликом мыши по элементу picturebox?

Замена картинки в PictureBox по клику
Здравствуйте! Я никогда не писала на c#. Но сейчас неожиданно появилась в этом необходимость, при чем срочно. Мне нужно создать форму,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru