![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
slavaentp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.6.2008 Репутация: нет Всего: -1 |
пикселей?
|
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
slavaentp, попробуйте поиграться со свойством Margin
-------------------- СУВ, Partizan. |
|||
|
||||
slavaentp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.6.2008 Репутация: нет Всего: -1 |
Мне даже интереснее не то, как решить этот конкретный вопрос, а как искать решение на такие вопросы.
Вот я захотел, чтобы у меня был ричтекстбокс, а под ним - кнопочка. Всё, больше ничего не надо. Но надо, чтобы текстбокс естественно раздвигался вместе с изменением размера окна, а кнопочка вместе с изменением размера окна находилась на том же расстоянии от края. Я знал, что, "прикрепление" к окну идёт с помощью Dock. Соответственно, был уверен, что и возможность "отклонения" от края для прикрепления находится тоже в области Dock. Не нашёл. Искал долго. Дальше я решил попробовать поставить кнопку на чёткое расстояние, сделав Dock на какой-нибудь "пустой" элемент формы, просто чтобы ричтекстбокс распространялся не до конца края формы, а оставил место для кнопки. Вначале думал это сделать с помощью label, но потом выяснил, что label закрывает кнопку. ОК. Вышел на такую штуку как UserControl. Добавил его в форму, сделал ему DockStyle.Bottom Теперь richtextbox раздвигается как надо, и я уже с помощью нескольких UserControl'ов почти поставил кнопку на нужное мне место. После чего пришёл ответ Partizan на мой вопрос, и выяснилось, что решение вопроса лежит абсолютно непонятно почему в каком-то свойстве Margin, которое, не зная заранее, обнаружить просто нереально! Ибо в описании MSDN оно описывается так: "Gets or sets the space between controls. (Inherited from Control). ". По такому описанию ну никак не понять, что это свойство может держать расстояние при изменении окна ![]() Поэтому мне интересно, как искать решения на такие простые в общем-то вещи, но которые оказываются "спрятаны" в самых неожиданных местах. Я понимаю, что если бы я знал концепцию Control'ов, то может быть бы описание это со скрипом понял, но в тех книгах, что я читал, контролы не объяснялись, а на практике мне впервые они понадобились. Да и вообще - в программировании много чего не знаешь, и как-то неприкольно, что каждый мелкий вопрос занимает столько времени и требует вопроса на форуме:( |
|||
|
||||
QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Свойство Anchor -------------------- I don't need a reason being who I am... |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
slavaentp, с опытом всё приходит. Начало всегда получается медленно и со скрипом...зато потом становится существенно легче...
-------------------- СУВ, Partizan. |
|||
|
||||
slavaentp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.6.2008 Репутация: нет Всего: -1 |
QryStaL, Anchor не делает ресайза.
|
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
slavaentp, делает. Он приякоревает нужный тебе край контрола к краю родителя.
|
|||
|
||||
slavaentp |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.6.2008 Репутация: нет Всего: -1 |
Не приякоривает. Добавлено через 7 минут и 47 секунд В этом случае он приякоривает, но размер не меняет. Мне-то нужно, чтобы текстбокс был на всю форму за исключением нижнего края, размером в 100 пикселей.
|
||||
|
|||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
slavaentp, так приякорь его сразу к 4 краям. Его почти порвет на части, и начент ресайзить.
Хотя в таком случае лучше Dock.Fill + Margin 100. |
|||
|
||||
slavaentp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.6.2008 Репутация: нет Всего: -1 |
Про Magrin - в MSDN есть примеры использования его в XML, но нету - в C#
|
|||
|
||||
QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Растягиваешь richTextBox на форму, а потом ставишь Anchor на все 4 стороны Добавлено через 3 минуты и 33 секунды А вообще для такой задачи лучше взять SplitContainer =) -------------------- I don't need a reason being who I am... |
|||
|
||||
slavaentp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.6.2008 Репутация: нет Всего: -1 |
Да, растяжка Anchor'ом на 4 стороны работает. Но если лучше DockStyle.Fill + Margin, то как это сделать? Вот это:
растягивает текстбокс на всю форму. |
|||
|
||||
slavaentp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 17.6.2008 Репутация: нет Всего: -1 |
Свойство Margin, которое в Visual C# Express Edition(до этого я в блокноте писал) при наличии DockStyle.Fill вообще ничего не меняет, какие значения Margin'у не ставь.
|
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
У контейнеров есть свойство Padding, оно служит для того, чтобы задать на какую величину заполняющий контрол будет удален от границы контейнера. Можно задать значение для любой из сторон или же для всех. Действует только если внутренний контрол имеет какой-нибудь док - fill, left и т.д. Теперь на счет Margin - служит для дезайнера, задает расстояние между элементами, при котором появляется полоска дока (или как там эта полоска называется
![]() |
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
Кстати, как раз для твоего случая. Есть контейнер TableLayoutPanel. Сделай в нем две строки. Для этого щелкни правой кнопкой мыши по TableLayoutPanel и из контекстного меню выбери Edit Rows and Columns. Далее, в верхнюю строку текстбокс а в нижнюю кнопку. Сделай для нижней строки Size Type = Absolute и задай скажем 30 пикселей. Сделай для TableLayoutPanel Dock = Fill и все как ты и хотел. Или сделай способом, которым ты пробовал - через панел или юзер конторол, в общем через еще один контейнер.
У дезайнера в студии есть один недостаток. Когда я использую якорьки для контролов на форме, а затем наследую классы от этой формы, то при открытии наследника в дезайнере положение контролов съезжает, иногда уходят за пределы формы. Но в рантайме все нормально выглядит, что хоть как-то, но сглаживает этот недостаток. ![]() Удачи! Добавлено через 5 минут и 20 секунд ЗЫ: вот как раз свойство Margin можно использовать для текстбокса при помещении его в контайнер хранения состояния, тобиш в TableLayoutPanel, FlowLayoutPanel и т.д. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |