Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/55: Рейтинг темы: голосов - 55, средняя оценка - 4.85
 Аватар для bidjason
1 / 2 / 3
Регистрация: 24.05.2016
Сообщений: 107

Размер окна и размер элементов

05.02.2018, 16:54. Показов 12226. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Помогите пожалуйста с решением задачи:
"При изменении размеров окна - изменить размер label1".
Есть form1, на форме есть label1. Подскажите пожалуйста, как изменить размер label1 при изменении размера form1.
Спасибо заранее, плюсов накидаю.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2018, 16:54
Ответы с готовыми решениями:

Размер окна
Как програмно в C# вручную задать размеры моего главного окна? :huh: Вот мой код: Код: int x,y; ... this.Size.Heigth=X;...

Размер окна
Добрый день. Подскажите пожалуйста, у кого нибудь была ли такая ситуация: создано приложение, открывается основная форма, ...

Сделать размер формы так чтобы размер панели был 640 x 480
Помогите. Не могу сделать вычисления размера формы так чтобы размер панели был равен 640 x 480 при условии что панель dock = fill а на...

13
16 / 16 / 9
Регистрация: 13.12.2011
Сообщений: 64
05.02.2018, 17:00
Создать событие и в нём написать, как должен изменяться label. Например:
C#
1
2
3
4
private void FormMain_ResizeEnd(object sender, EventArgs e)
        {
             label1.Width=100;
        }
1
 Аватар для bidjason
1 / 2 / 3
Регистрация: 24.05.2016
Сообщений: 107
05.02.2018, 17:58  [ТС]
HookMan007, а можно ли допустим создать какие-то пропорции? Типо если форма увеличится на определённое кол-во процентов, то и label увеличить на столько же процентов
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
05.02.2018, 18:19
bidjason, Ну например вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyForm : Form
{
    private Size oldFormSize = Size;
    public MyForm()
    {
        InitializeComponent();
    }
    private void MyForm_Resize(object sender, System.EventArgs e)
    {
        Control control = (Control)sender;
        
        label.Size = new Size( Size.Width * label.Size.Width / oldFormSize.Width, Size.Height * label.Size.Height / oldFormSize.Height);
    }
}
Добавлено через 1 минуту
HookMan007,
Цитата Сообщение от HookMan007 Посмотреть сообщение
Создать событие и в нём написать, как должен изменяться label. Например:
C#
1
2
3
4
private void FormMain_ResizeEnd(object sender, EventArgs e)
{
* * label1.Width=100;
}
Я что-то не увидел, как Вы создаете событие. Вы просто подписываетесь на уже существующее событие формы ResizeEnd
1
 Аватар для bidjason
1 / 2 / 3
Регистрация: 24.05.2016
Сообщений: 107
05.02.2018, 18:30  [ТС]
Bretbas,
Миниатюры
Размер окна и размер элементов  
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
05.02.2018, 18:38
bidjason, тогда измени вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyForm : Form
{
    private Size oldFormSize;
    public MyForm()
    {
        InitializeComponent();
 
        oldFormSize = Size;
    }
    private void MyForm_Resize(object sender, System.EventArgs e)
    {
        Control control = (Control)sender;
        
        label.Size = new Size( Size.Width * label.Size.Width / oldFormSize.Width, Size.Height * label.Size.Height / oldFormSize.Height);
    }
}
1
 Аватар для bidjason
1 / 2 / 3
Регистрация: 24.05.2016
Сообщений: 107
05.02.2018, 19:06  [ТС]
Bretbas, при изменении размеров формы лейбел не изменяется в размере:
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
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 _112233
{
    public partial class Form1 : Form
    {
        private Size oldFormSize;
        public Form1()
        {
            InitializeComponent();
            oldFormSize = Size;
        }
 
        private void Form1_Resize(object sender, EventArgs e)
        {
            Control control = (Control)sender;
            label1.Size = new Size(Size.Width * label1.Size.Width / oldFormSize.Width, Size.Height * label1.Size.Height / oldFormSize.Height);
        }
    }
}
Миниатюры
Размер окна и размер элементов  
Изображения
 
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
05.02.2018, 19:22
bidjason, Понял почему не работает. Потому что свойство Size у контрола Label зависит от размера шрифта. Поэтому будем руководствоваться изменением шрифта у Label при изменении размера формы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public partial class Form1 : Form
{
    private float oldAreaForm;
    public Form1()
    {
        InitializeComponent();
 
        oldAreaForm = Size.Width * Size.Height;
    }
 
    private void Form1_Resize(object sender, EventArgs e)
    {
        Control control = (Control)sender;
        var newAreaForm = Size.Width * Size.Height;
 
        float fontSize = Font.Size * newAreaForm / oldAreaForm;
 
        label1.Font = new Font("Microsoft Sans Serif", fontSize);
    }
}
1
 Аватар для bidjason
1 / 2 / 3
Регистрация: 24.05.2016
Сообщений: 107
05.02.2018, 19:27  [ТС]
Bretbas, это заработало, но теперь при слишком большом увеличении происходит вот это:
Миниатюры
Размер окна и размер элементов  
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
05.02.2018, 19:29
bidjason,
Цитата Сообщение от bidjason Посмотреть сообщение
это заработало, но теперь при слишком большом увеличении происходит вот это:
А Вы что хотели? Он будет конечно залезать за форму
1
 Аватар для bidjason
1 / 2 / 3
Регистрация: 24.05.2016
Сообщений: 107
05.02.2018, 19:32  [ТС]
Bretbas, это можно как нибудь починить?
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
05.02.2018, 19:37
Лучший ответ Сообщение было отмечено bidjason как решение

Решение

bidjason, можно сделать, чтобы он только при увеличение ширины окна, изменял размер label'а:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public partial class Form1 : Form
{
    private float oldFormWidth;
    public Form1()
    {
        InitializeComponent();
 
        oldFormWidth = Size.Width;
    }
 
    private void Form1_Resize(object sender, EventArgs e)
    {
        Control control = (Control)sender;
        var newFormWidth = Size.Width;
 
        float fontSize = Font.Size * newFormWidth / oldFormWidth;
 
        label1.Font = new Font("Microsoft Sans Serif", fontSize);
    }
}
1
 Аватар для bidjason
1 / 2 / 3
Регистрация: 24.05.2016
Сообщений: 107
05.02.2018, 19:55  [ТС]
Bretbas, вот так нормально. Спасибо)
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
05.02.2018, 19:57
bidjason, Не за что
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2018, 19:57
Помогаю со студенческими работами здесь

DataGridView размер окна
Всем доброго времени суток. Есть соединение с базой SQL. В зависимости от выбора таблицы обновляется DGV. В таблицах разное количество...

Подогнать размер изображения под размер PictureBox
Как изменить размер изображения при открытии? А то когда я добавляю в пикчер бокс, они обычно бывают не того разрешения и либо вылазят...

Подогнать размер картинки под размер формы
Здравствуйте! Я накладываю изображение на форму, но я столкнулся с проблемой. Мой код:this.BackgroundImage = new...

Размер окна на разных мониторах
Господа, помогите пожалуйста разобраться в загадочном явлении: Разрабатываю программу на разрешении экрана 1280х1024. Размер окна...

Выводить размер текущего окна
Есть программка. В меню "Input Size" ма задаем значения, на которые будет изменяться размер окна. В меню "Choose" мы...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru