Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/41: Рейтинг темы: голосов - 41, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 6
1

Как создать несколько picturebox динамически

04.05.2015, 16:58. Показов 8122. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать так, чтобы по нажатию кнопки клавиатуры создавался picturebox на форме, при чем если кнопка жмется еще раз, то создается еще один picturebox помимо старого?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2015, 16:58
Ответы с готовыми решениями:

Как обратиться к одному из несколько динамически созданных PictureBox
Вот мой код, как при нажатии button1 добраться до любого piictureBox??? Например ...

Как динамически создать последовательно несколько TextBox по нажатию кнопки
Уважаемые специалисты C#! Подскажите пожалуйста, как динамически создать несколько TextBox-ов не...

Каждой динамически созданной кнопке свой динамически созданный PictureBox
Добрый день. Надеюсь, что пишу в тот раздел. Находил немного похожие темы: каждая созданная кнопка...

Как динамически создать несколько speedbuttons
У меня в программе используется несколько speedbuttons(около 20) нужно создавать их динамически,...

4
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
04.05.2015, 17:35 2
Лучший ответ Сообщение было отмечено NPolyakoff как решение

Решение

C#
1
2
3
4
5
6
7
8
 
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
              // используем свойство e.KeyChar для определения нужной кнопки
             PictureBox pic = new PictureBox();
              // тут настраиваем pic, положение, картинка, размер и тд
             this.Controls.Add(pic);
        }
1
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 6
04.05.2015, 19:24  [ТС] 3
EvilFromHell, а не подскажите, можно ли сделать то же самое, только с таймерами? Я пробовал сделать аналогично коду сверху, но не вышло
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
04.05.2015, 20:31 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Можно, но чуть по-другому, они ложатся в массив компонентов, а не контролов:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication24
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (this.components == null) { this.components = new System.ComponentModel.Container(); }
            Timer timer = new Timer();
            this.components.Add(timer);
            timer.Tick += new EventHandler(handler);
        }
 
        private void handler(object sender, EventArgs args)
        {
            MessageBox.Show("!!!");
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            (this.components.Components[this.components.Components.Count - 1] as Timer).Start();
        }
    }
}
1
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
04.05.2015, 22:44 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Работает по нажатию клавиши Т:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        public Form1()
        {
            InitializeComponent();
            this.KeyPreview = true;
            this.KeyDown += new KeyEventHandler(Form1_KeyDown);
        }
        public int sch = 0;
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.T)
            {
                PictureBox pct = new PictureBox();
                pct.Height = 100;
                pct.Width = 100;
                pct.Name = "pct" + sch;
                pct.Left = 20 + sch * 110;
                pct.Top = 30;
                pct.BackColor = Color.Aqua;
                Controls.Add(pct);
                sch += 1;
            }
        }
1
04.05.2015, 22:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2015, 22:44
Помогаю со студенческими работами здесь

Создать событие Click для динамически создаваемого PictureBox
Хай всем! Не могу создать событие Click для динамически создаваемого PictureBox(для массива...

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

Как динамически создать массив из динамически конструируемых экземпляров класса?
Есть два класса.Подразумевается ,что первый в конструкторе выделяет интовый массив длинной n,второй...

Как удалить динамически созданные PictureBox?
Добрый день. Написал прогу - хранилище мемов. Все работает - только есть утечка памяти. Не могу...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru