Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84

Изменение количества и размера панелей по щелчку

11.08.2010, 17:06. Показов 5940. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Люди сильно не ругайтесь я только начала изучать c#, есть вот такая идея, есть определенное количество панелей, в которые я потом вставлю фотографии мне надо, чтобы при нажатии на кнопки менялось количество и размер. Чтобы проще меня было понять, выкладываю скрины. Помогите, пожалуйста!!!
Миниатюры
Изменение количества и размера панелей по щелчку   Изменение количества и размера панелей по щелчку   Изменение количества и размера панелей по щелчку  

0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.08.2010, 17:06
Ответы с готовыми решениями:

Динамическое изменение количества панелей
Доброго утра всем спецам по WPF. Прошу подкинуть мысли по решению следующей проблемы: Имеется MainWindow, в котором содержится...

Изменение размера картинки по щелчку
Как при одном щелчке сделать так, чтоб размер картинки увеличивался, а при еще одном нажатии уменьшался? c#

Изменение положения и размера N-го количества компонентов
Как всегда не уверен в названии темы Доброго вечера. Интересует следующий вопрос относительно компонента TPanel. Имеется FormX, на...

53
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 14:15
Студворк — интернет-сервис помощи студентам
точно, я ошибся, написал "i.ToString()" вместо i.ToString(), пардон!
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 14:36  [ТС]
Да это понятно, что в кавычках это текстовое значение вот только ошибки остались!
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 14:54
Цитата Сообщение от Бельфегор Посмотреть сообщение
int n=Convert.ToInt32(p.Name.ToString);
еще тут ошибка, после ToString скобки не поставил

Добавлено через 10 минут
Цитата Сообщение от pink-cake Посмотреть сообщение
Ну в идеале должно получится красивый домашний альбом аля скринсейвер вот!
А код у меня не работает - опять я туплю!
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
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
              Panel panel;
              int x = 0;
              int y = 0;
              int n = 0;
              int diff = 0;
              for (int i = 1; i <= n; i++)
              {
                  panel = new Panel();
                  panel.Size = new Size(Width, Height);
                  panel.Location = new Point(x, y);
                  panel.Name = i;
                  x += Width + diff;
                  this.Controls.Add(panel);
                  panel1.Click += new EventHandler(panel1_Click);                       
 
              }
             
        }
 
        private void panel1_Click(object sender, EventArgs e)
        {
            Panel p = (Panel)sender; //это мы получили ту панель , на которым был клик сделан
            int w = 400;
            if (p.Width < w)
            {
                p.Width = 2 * p.Width;
                p.Height = 2 * p.Height;
 
               }
            //вот эти для скрытия ненужных панелек
            int n = Convert.ToInt32(panel.Name.ToString);//здесь получили в число (т.е. из имени сделали число) панельки
            //если у вас 12 панелек нужно от полученного числа до двенадцатой панельки скрыть
            for (int i = n; i <= 12; i++)
            {
                this.Controls["i.ToString()"].Visible = false; //this.Controls-ом получаем контрол который находится на форме и имеет имя написанное в квадратных скобках т.е. ["i.ToString()"]
                this.Controls["i.ToString()"].BackgroundImage = null; //это мы изображение с панельки убрали
            }    
            
            panel1.BringToFront();
        
            
        }
 
        private void panel8_Click(object sender, EventArgs e)
        {
            Panel p = (Panel)sender; //это мы получили ту панель , на которым был клик сделан
            int w = 400;
            if (p.Width < w)
            {
                p.Width = 2 * p.Width;
                p.Height = 2 * p.Height;
 
            }
            panel8.BringToFront();
        }
 
 
        }
    }
Ругается что не явное преобразование int в string невозможно и что panel не существует в текущем контексте
что это за код?
откуда взялсо panel1, зачем вам panel8, я же обьяснил, обьявление Panel panel; нужно вставить в классе формы, перед public Form1(), чтобы panel был доступен из всего кода...дальше событие Click нужно добавлять для
C#
1
panel
а не для panel1, и обрабатывать тоже для
C#
1
panel
вот таки должен быть код

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
public partial class Form1 : Form
    {
 Panel panel;       
 public Form1()
        {
            InitializeComponent();             
              int x = 0;
              int y = 0;
              int n = 0;
              int diff = 0;
              for (int i = 1; i <= n; i++)
              {
                  panel = new Panel();
                  panel.Size = new Size(Width, Height);
                  panel.Location = new Point(x, y);
                  panel.Name = i;
                  x += Width + diff;
                  this.Controls.Add(panel);
                  panel.Click += new EventHandler(panel_Click);                       
 
              }
             
        }
 
        private void panel_Click(object sender, EventArgs e)
        {
            Panel p = (Panel)sender; //это мы получили ту панель , на которым был клик сделан
            int w = 400;
            if (p.Width < w)
            {
                p.Width = 2 * p.Width;
                p.Height = 2 * p.Height;
 
               }
            //вот эти для скрытия ненужных панелек
            int n = Convert.ToInt32(panel.Name.ToString());//здесь получили в число (т.е. из имени сделали число) панельки
            //если у вас 12 панелек нужно от полученного числа до двенадцатой панельки скрыть
            for (int i = n; i <= 12; i++)
            {
                this.Controls[i.ToString()].Visible = false; //this.Controls-ом получаем контрол который находится на форме и имеет имя написанное в квадратных скобках т.е. ["i.ToString()"]
                this.Controls[i.ToString()].BackgroundImage = null; //это мы изображение с панельки убрали
            }    
            
            panel1.BringToFront();
        
            
        }
 
        }
    }
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 15:09  [ТС]
Поменяла код осталась ошибка: Неявное преобразование типа "int" в "string" невозможно ругается на panel.Name = i;
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 15:10
ну сделайте

C#
1
panel.Name=i.ToString();
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 15:32  [ТС]
Блин не получается ничерта уйду в везание!!!
У меня все компилируется только вот при клике на панель выскакивает отладчик на строку
C#
1
int n = Convert.ToInt32(panel.Name.ToString());
жулуется
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 15:38
что пишет, какая ошибка?
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 15:53  [ТС]
Необработанное исключение типа "System.FormatException" произошло в mscorlib.dll

Дополнительные сведения: Входная строка имела неверный формат.
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 16:29  [ТС]
Вот проект посмотрите я не знаю куда копать?!
Вложения
Тип файла: rar dff.rar (36.2 Кб, 9 просмотров)
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 16:30
ой девушка я постоянно ошибки у вас нахожу. зачем вы при создании панелек n=0 сделали, ни одно не создаете, переменные Width и Height вообще не обьявили и не дали им значения, ког int n=ConvertToInt32(panel.name.ToString()) не panel должен быть а p

вот так вот у меня код работает берите

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
  Panel panel;       
 public Form1()
        {
            InitializeComponent();             
              int x = 0;
              int y = 0;
             // int n = 12;
              int diff = 10;
              for (int i = 1; i <= 12; i++)
              {
                  panel = new Panel();
                  panel.Size = new Size(50, 50);
                  panel.Location = new Point(x, y);
                  panel.Name = i.ToString();
                  panel.BackColor=Color.Black;
                  x += 50 + diff;
                  this.Controls.Add(panel);
                  panel.Click += new EventHandler(panel_Click);                       
 
              }
             
        }
 
        private void panel_Click(object sender, EventArgs e)
        {
            Panel p = (Panel)sender; //это мы получили ту панель , на которым был клик сделан
            int w = 100;
            if (p.Width < w)
            {
                p.Width = 2 * p.Width;
                p.Height = 2 * p.Height;
 
               }
            //вот эти для скрытия ненужных панелек
            int n = Convert.ToInt32(p.Name.ToString());//здесь получили в число (т.е. из имени сделали число) панельки
            //если у вас 12 панелек нужно от полученного числа до двенадцатой панельки скрыть
            for (int i = n+1; i <= 12; i++)
            {
                this.Controls[i.ToString()].Visible = false; //this.Controls-ом получаем контрол который находится на форме и имеет имя написанное в квадратных скобках т.е. ["i.ToString()"]
                this.Controls[i.ToString()].BackgroundImage = null; //это мы изображение с панельки убрали
            }    
            
            panel.BringToFront();
        
            
        }
я вам все обьяснаю, а вы не читаете, прочтите то что пишут если уж лень книги читать и вдумайтесь в прочитанное, а не просто копируйте
нужно суть понимать
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 16:51  [ТС]
Если бы я понимала то и читала книги, я сама верстальщик и у меня пока туго с логическим мышлением, я пока не увижу и не попробую ничего не пойму, то что вы пишите я читаю и стараюсь понять !
У меня так и написано все равно выдает отладчик ошибку!
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace album
{
    public partial class Form1 : Form
    {
        Panel panel;
        public Form1()
        {
            InitializeComponent();
            int x = 0;
            int y = 0;
            // int n = 12;
            int diff = 10;
            for (int i = 1; i <= 12; i++)
            {
                panel = new Panel();
                panel.Size = new Size(50, 50);
                panel.Location = new Point(x, y);
                panel.Name = i.ToString();
                panel.BackColor = Color.Black;
                x += 50 + diff;
                this.Controls.Add(panel);
                panel.Click += new EventHandler(panel_Click);
 
            }
 
        }
 
        private void panel_Click(object sender, EventArgs e)
        {
            Panel p = (Panel)sender; //это мы получили ту панель , на которым был клик сделан
            int w = 100;
            if (p.Width < w)
            {
                p.Width = 2 * p.Width;
                p.Height = 2 * p.Height;
 
            }
            //вот эти для скрытия ненужных панелек
            int n = Convert.ToInt32(p.Name.ToString());//здесь получили в число (т.е. из имени сделали число) панельки
            //если у вас 12 панелек нужно от полученного числа до двенадцатой панельки скрыть
            for (int i = n + 1; i <= 12; i++)
            {
                this.Controls[i.ToString()].Visible = false; //this.Controls-ом получаем контрол который находится на форме и имеет имя написанное в квадратных скобках т.е. ["i.ToString()"]
                this.Controls[i.ToString()].BackgroundImage = null; //это мы изображение с панельки убрали
            }
 
            panel.BringToFront();
 
 
        }
    }
}
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 16:55
ну не знаю, у меня все работает.
если понадобятся еще код обьяснить можете ко мне в skype постучатся может голосом обьяснить получится
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 17:00  [ТС]
Может я на форме чего портачу? У меня скайпа нет!
Или у меня программа другая? (VS2008)
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 17:02
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 17:10  [ТС]
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 17:12
сможете прикрепить ваш проект?
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 17:18  [ТС]
У меня при компиляции выдает "скрин" я так понимаю эти Малевички и есть мои 12 панелей
Миниатюры
Изменение количества и размера панелей по щелчку  
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 17:21  [ТС]
ВОТ!
Вложения
Тип файла: rar album.rar (32.2 Кб, 14 просмотров)
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
12.08.2010, 17:24
да они и есть ваши панельки просто я на них черный цвет поставил чтоб их видно было, а при клике на них что происходит?

Добавлено через 2 минуты
я ваш проект скомпилировал все у меня заработало
0
 Аватар для pink-cake
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 84
12.08.2010, 17:32  [ТС]
Вот я дура! А я создала панель и в событии клик ей все прописала но это немного не то мне надо, чтобы рамки уже были на форме и при клике по кнопке рядом я могла спрятать или вновь отобразить несколько рамок
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2010, 17:32

Создание собственного VCL компонента. Динамическое изменение количества колонок в зависимости от размера объекта
Доброго времени суток всем. Решил при создании своего компонента на основе TStringGrid инкапсулировать в него ряд свойств. Хочется...

Вывод n-ого количества панелей на форму
Существует форма, на которой в столбик должны создаваться панели с одинаковым набором элементов (см.скриншот). У меня есть папка, в...

Увеличить картинку до исходного размера по щелчку на PictureBox
Подскажите, как сделать: щелчек по pictureBox - увеличивает картинку до исходных размеров?

jList и изменение панелей при клике
Есть 10 панелей, и jList слева. Собственно при клике на пункт jList нужная панель должна стать видимой, а другие-нет. Не писать же по...

Изменение значения ячейки по щелчку
Добрый день. Подскажите код как увеличивать значение ячейки на 1 в таблице по 2му щелчку или по нажатию пробела привыделеной ячейке? ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru