2013-08-19 3 views
0

У меня есть форма окна с непрозрачностью 70%, которую я использую в качестве наложения при получении данных с сервера.C# winform непрозрачность 70%, но панель внутри непрозрачность 100%

Внутри моей формы У меня есть панель с центром, содержащая текст «Пожалуйста, подождите ...». Прямо сейчас на эту панель также влияет непрозрачность, но я хочу переопределить ее для панели, поэтому непрозрачность панели составляет 100%.

Любой ключ?

Большое спасибо

+0

См. Http://social.msdn.microsoft.com/Forums/windows/en-US/43124fb0-3422-42a8-93d4-e76c4410ac42/semitransparent-form-with-no-transparent-control – sara

+1

Это не " t до Windows 8. Учитывая его популярность, вам придется подождать еще десять лет, прежде чем вы сможете положиться на нее. Простым обходным путем является отображение другой формы сверху. –

ответ

0

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

Две идеи происходят мне:

  1. Сделайте свое «Пожалуйста, подождите ...» Не будь ребенком вашей формы. Если это форма высшего уровня сама по себе, вы можете установить любую непрозрачность, которую вы хотите на нее, и не беспокоиться о ее родителях.
  2. Сделайте свою форму верхнего уровня непрозрачностью 100% и измените всех своих детей на непрозрачность 70%, кроме панели «Подождите ...».

Из двух первых звуков менее уродливых - это просто означает, что вам нужна дополнительная форма верхнего уровня. Второй на самом деле не так уж и плох, но вам просто нужно пройти через всех детей верхней формы.

+0

Следуя вашему совету, я создаю frmOverlay, который представляет собой форму непрозрачности 70%. Затем из моей основной формы я показываю ее. Затем внутри события frmOverlay.Load я создаю экземпляр формы frmPleaseWait, который является непрозрачностью 100%, и я также создаю frm.Show (this). Кажется, он работает отлично. Обе формы не являются Top-Most, поэтому я не хочу видеть «Подождите», если приложение находится в фоновом режиме. Как вы думаете? – VAAA

+0

@VAAA Если вы имеете в виду 'frmPleaseWait.Show (this)', избавитесь от '(this)'. В противном случае вы создаете 'frmOverlay' другим родителем. –

Смежные вопросы