Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
12 / 4 / 1
Регистрация: 11.09.2018
Сообщений: 67

Растягивание окна под содержимое

11.04.2022, 17:40. Показов 2091. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Есть небольшая форма с лейблом текстовым блоком и несколькими кнопками. Хочется сделать так чтобы форма принимала размеры в зависимости от содержимого текстового блока
скрин для примера


Есть возможность получить высоту текстового блока после его заполнения или может есть какое-то более изящное решение? Прокрутку не предлагать пожалуйста.
Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2022, 17:40
Ответы с готовыми решениями:

Изменять содержимое окна динамически
Не знаю как правильно сформулировать вопрос, иначе наверное смог бы найти ответ в Google... Суть в следующем: есть главное окно программы...

Требуется синхронизировать растягивание окна с изменением размера объекта
Вот мой код, но он работает только при загрузке формы. После этого объект не растягивается. while (this.Height != ant.Height) ...

Какой пункт в свойствах отвечает за растягивание окна программы?
Вопрос выше

23
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
15.04.2022, 14:19
Студворк — интернет-сервис помощи студентам
PsychoTech, это издержки работы напрямую с UI элементами на Шарпе.
Если вы работает как оно на то рассчитано в XALL через привязки, то поведение будет гораздо ближе к ожидаемому.

Для точного ответа вам - недостаточно деталей.
В основном это связанно с тем, что UI однопотоковый - всё выполняется в одном основном потоке приложения.
Построение макета компоновки это сложный процесс, который осуществляется в несколько проходов.
Сначала просчитываются нижележащие элементы и получают от них информацию о требуемом ими размере.
Потом строится макет вышележащих.
Если не хватает м в вышележащем место, то информируется нижележащий - получает от него новый размер и т.д.
В целом построение макета считается одной задачей, в процессе которой элементы не должны менять свои требования к размерам.
Если изменить размер элемента после прохода с его опросом, то это изменение не будет учтено до следующего построения макета всего окна.
Изменение же через привязки - автоматически раскидывает обновление значений по новым задачам, что неявно вызывает новый цикл построения макета.

Цитата Сообщение от PsychoTech Посмотреть сообщение
Я не долго думая дополнил функцию которая задает знаения для отображаемых элементов кодом чтобы окно "прилипало" к краю,
То есть если окно выходит за границы вправо (или вниз), вы изменяете его позицию, чтобы создать эффект "роста" влево (или вверх)?
Если да, то вам нужно прослушивать событие изменения размера Окна SizeChanged и в обработчике менять позицию окна.

Если вам не это нужно - уточните более детально, что именно
0
12 / 4 / 1
Регистрация: 11.09.2018
Сообщений: 67
15.04.2022, 16:09  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
То есть если окно выходит за границы вправо (или вниз), вы изменяете его позицию, чтобы создать эффект "роста" влево (или вверх)?
Если да, то вам нужно прослушивать событие изменения размера Окна SizeChanged и в обработчике менять позицию окна.
да задачу наверно точнее не описать, но можете не верить это первое что я сделал. результат = 0
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
15.04.2022, 17:02
PsychoTech, возможно дела в том, что вы проверяете Height, а не ActualHeight.

Вот рабочий демо-пример:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<Window x:Class="Core2022.StickBottomWind"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Core2022"
        mc:Ignorable="d"
        Title="StickBottomWind" Width="800" SizeToContent="Height"
        SizeChanged="OnSizeChanged">
    <Grid x:Name="mainGrid" Margin="10" Height="200" Background="AliceBlue">
        
    </Grid>
</Window>
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
using System;
using System.Windows;
using System.Windows.Threading;
 
namespace Core2022
{
    // https://www.cyberforum.ru/wpf-silverlight/thread2968492.html
    /// <summary>
    /// Логика взаимодействия для StickBottomWind.xaml
    /// </summary>
    public partial class StickBottomWind : Window
    {
        private readonly DispatcherTimer timer = new DispatcherTimer();
        private readonly Random rnd = new Random();
        public StickBottomWind()
        {
            InitializeComponent();
 
            timer.Interval = TimeSpan.FromSeconds(2);
            timer.Tick += (s, e) => mainGrid.Height = rnd.Next(100, 200);
            timer.Start();
        }
 
        private void OnSizeChanged(object sender, SizeChangedEventArgs e)
        {
            Top = SystemParameters.WorkArea.Height - ActualHeight; // Актуальная высота.
            Top = SystemParameters.WorkArea.Height - e.NewSize.Height; // Так лучше.
        }
    }
}
Добавлено через 2 минуты
PsychoTech, в методе две эквивалентные строки для примера.
Оставьте только одну из них.
1
12 / 4 / 1
Регистрация: 11.09.2018
Сообщений: 67
16.04.2022, 17:58  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
возможно дела в том, что вы проверяете Height, а не ActualHeight.
да это решило проблему
Цитата Сообщение от Элд Хасп Посмотреть сообщение
в методе две эквивалентные строки для примера.
я сам прописал функцию. спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.04.2022, 17:58

Растягивание окна приложения по сторонам экрана, аналогично обычному Проводнику в Win10
Собственно, в чем суть вопроса: Есть приложение на WinWorms, окно которого требуется растянуть на весь экран при поднятии его до верхнего...

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

Запретить растягивание окна
Как запретить изменение размеров окна(растягивание)?

Растягивание диалогового окна
Как растянуть диалоговое окно на всю ширину, какие размеры не ставлю все ровно это макс... &lt;LinearLayout ...

Как запретить растягивание окна
Как в готовом приложение запретить растягивать размер окна-чтобы он был статичным и все кнопку развернуть заблокировать смог я...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru