Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/43: Рейтинг темы: голосов - 43, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 9

ReSize формы

13.04.2011, 21:18. Показов 8905. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возникла следующая проблема (поиском пользовался ничего похожего не нашел, мб плохо искал)
Итак, есть форма, 8 компонентов PictureBox, Panel внизу экрана. Необходимо чтобы эти PictureBox'ы занимали максимально возможное кол-во места и при ресайзе формы соответственно тоже изменялись.
Для 4 PB все получилось, код выглядит следующим образом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void ReSize()
        {
            pb1.Width = pb2.Width = pb3.Width = pb4.Width = Width / 2 - 20;
            pb1.Height = pb2.Height = pb3.Height = pb4.Height = Height / 2 - panel1.Height - 10;
            pb1.Left = pb3.Left = 10;
            pb2.Left = pb4.Left = 20 + pb1.Width;
            pb1.Top = pb2.Top = 10;
            pb3.Top = pb4.Top = 20 + pb1.Height;
        }
 
 
        private void main_Resize(object sender, EventArgs e)//событие "свернуть в окно"
        {
            ReSize();
        }
 
        private void main_Load(object sender, EventArgs e)//событие загрузки форм
        {
            ReSize();
        }
Как сделать для 8 не понятно=(
Заранее благодарю.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.04.2011, 21:18
Ответы с готовыми решениями:

событие resize
Ребята, нужна помощь) при изменении формы, нужно менять размеры панели с картинкой на ней, чтобы все это было пропорционально загрузка...

Метод Array.Resize
Как сделать так чтобы он выводил все элементы удовлетворяющие данному условию, используя Array.Resize?? int a = 0; int A...

Быстрый Resize Bitmap
Здравствуйте, камрады! Суть проблемы: нужно в интерактивном режиме ресайзить Bitmap порядка 3*4 тыщи пикселей или даже больше. Грубо...

6
145 / 145 / 26
Регистрация: 09.10.2009
Сообщений: 261
13.04.2011, 22:22
Не совсем понятно, какой именно ресайз вам нужен. Ваш текущий код вряд ли корректно заресайзит контролы, если я, к примеру, потяну в сторону за край формы. Вот посмотрите: Resize - в этой теме я отвечал, как нужно правильно это делать для формы, содержащей одну панель с картинкой в качестве бекграунда. Попробуйте применить приведенный там метод для своего случая.
1
начал понимать msdn
57 / 57 / 6
Регистрация: 11.03.2010
Сообщений: 232
13.04.2011, 22:48
Лучший ответ Сообщение было отмечено как решение

Решение

Лови код, если нужно напиши почту, скину проект.
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
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 WindowsFormsApplication17
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int x;
        int y;
        private void Form1_Load(object sender, EventArgs e)
        {
            x = this.Width;
            y = this.Height - 67;  // 30 высота панели + высота главной подписи.. на глаз примерно 37 пикселей))
            resiz();
        }
 
        private void Form1_Resize(object sender, EventArgs e)
        {
                x = this.Width;
                y = this.Height - 67;
                resiz();
        }
        private void resiz()
        {
            pictureBox1.Width = x / 4;
            pictureBox1.Height = y / 2;
            pictureBox2.Width = x / 4;
            pictureBox2.Height = y / 2;
            pictureBox3.Width = x / 4;
            pictureBox3.Height = y / 2;
            pictureBox4.Width = x / 4;
            pictureBox4.Height = y / 2;
            pictureBox5.Width = x / 4;
            pictureBox5.Height = y / 2;
            pictureBox6.Height = y / 2;
            pictureBox6.Width = x / 4;
            pictureBox7.Height = y / 2;
            pictureBox7.Width = x / 4;
            pictureBox8.Height = y / 2;
            pictureBox8.Width = x / 4;
 
            pictureBox1.Location = new Point(0, 0);
            pictureBox2.Location = new Point(pictureBox1.Width, 0);
            pictureBox3.Location = new Point(pictureBox1.Width*2, 0);
            pictureBox4.Location = new Point(pictureBox1.Width*3, 0);
           
            pictureBox5.Location = new Point(0, pictureBox1.Height);
            pictureBox6.Location = new Point(pictureBox1.Width, pictureBox1.Height);
            pictureBox7.Location = new Point(pictureBox1.Width * 2, pictureBox1.Height);
            pictureBox8.Location = new Point(pictureBox1.Width * 3, pictureBox1.Height);
 
            panel1.Location = new Point(0, pictureBox1.Height * 2);
            panel1.Size = new Size(x, 30);
        }
 
        private void pictureBox8_Click(object sender, EventArgs e)
        {
 
        }
 
        private void pictureBox7_Click(object sender, EventArgs e)
        {
 
        }
 
        private void pictureBox5_Click(object sender, EventArgs e)
        {
 
        }
    }
}
3
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 9
14.04.2011, 18:00  [ТС]
ArtOfLife, Laak, благодарю=)

Цитата Сообщение от ArtOfLife Посмотреть сообщение
Не совсем понятно, какой именно ресайз вам нужен. Ваш текущий код вряд ли корректно заресайзит контролы, если я, к примеру, потяну в сторону за край формы.
Да, только сейчас заметил, если тянуть за края, то кнопки на панельки могут выйти за рамки и исчезнуть. Ресайз нужен на случаи: тянуть за края и развернуть форму на полный экран (чтобы при этом сохранялись пропорции всех элементов находящихся на форме).

Вроде бы все получилось в итоге, НО теперь мне еще осложнили задачу, внизу в панельке должна быть кнопка и три скрол-бара.
Форма примерно должна выглядеть так:

З.Ы. Что то предчувствую, что все переделывать придется.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
14.04.2011, 18:08
С помощью TableLayoutPanel, все проще и вручную пересчитывать не нужно
1
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 9
14.04.2011, 18:44  [ТС]
Ээээ, я CиШарп только изучать начал =) О таком элементе даже не знал, спасибо, сейчас попробую.

Добавлено через 28 минут
Всё, разобрался, всем спасибо за помощь! Тему можно клоуз.
0
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 3
26.07.2012, 18:22
TableLayout не решает вопрос пропорционального масштабирования
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.07.2012, 18:22
Помогаю со студенческими работами здесь

Использование Array.Resize()
мне нужно применить Array.Resize(ref array, array.Length + 1); к массиву обьектов класса Fields(массив A) , написала A.Resize(ref A,...

Что не так с Array.Resize?
Чем плохо использование Array.Resize? Почему за его использование могут косо посмотреть и посмеяться? Я знаю, что есть List<> и...

Можно ли использовать функцию .Resize для создания массива?
Добрый вечер, уважаемые форумчяне! Подскажите пожалуйста можно ли использовать ф-цию .Resize для создания массива? Вот таким способом: ...

Resize как получить предыдущие размеры
как на методе resize получить размер объекта до изменения его размеров

Resize формы. Как ограничить размер изменения формы
Здравствуйте. Выполняю ресайз формы при помощи этого кода. Подскажите как ограничить изменения размера формы. Когда размер формы, при...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru