Создайте блок в стиле System-tray в Winforms (C #) - PullRequest
4 голосов
/ 30 января 2010

Я искал некоторые ресурсы по этому вопросу, и я не могу их найти, поэтому я приведу сюда.

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

Пример окна http://img63.imageshack.us/img63/6204/volcontrolstyleguide.png

К сожалению, я не могу найти никаких ресурсов по этому вопросу; ты можешь мне помочь?

Ответы [ 4 ]

6 голосов
/ 01 июня 2010

Это довольно просто. Создайте новую форму и установите свойства ControlBox, MaximizeBox и MinimizeBox равными false. Установите для свойства Title пустую строку. Это эффективно устранит область строки заголовка, не являющуюся клиентом, и даст вам следующее:

Simple winforms window without nonclient area

Внутренняя часть (как в «Настройке») может быть продублирована с помощью панели и ссылки соответствующего размера.

1 голос
/ 31 января 2010

Допущения:

  1. это форма фиксированного размера, никогда не может быть больше

  2. вы хотите, чтобы это работало как на XP, так и на Vista (т. Е. Без использования специальных методов Vista, таких как «Glass»). Я упоминаю об этом, потому что, в конце концов, системный трей возвращается к позднему палеолиту:)

Вот как:

  1. создайте форму того же размера, что и ваш файл .png

  2. установить для свойств ControlBox, MaximizeBox, MinimizeBox значение 'false

  3. установить для FormBorderStyle значение «Нет»

  4. установите для ключа прозрачности формы какой-либо цвет и установите цвет фона формы на тот же цвет: обратите внимание, используйте цвет, которого нет в файле .png.

  5. поместите PictureBox на форму, установите его свойство Dock на 'Fill: установите его свойство Margin # 0 для всех полей: установите его BackColor на' Transparent: затем, естественно, установите свойство Image для PictureBox на ваш .png файл.

ПРИМЕЧАНИЕ:

Если вы подготовили свое изображение .png так, чтобы оно было ограничено прозрачной областью так, чтобы оно выглядело закругленным: вы можете использовать это напрямую и пропустить весь этап создания формы скругленного прямоугольника с помощью вызова API установить область формы: это означает, что ваша форма будет иметь стандартную прямоугольную ограничивающую рамку. Если вы можете жить с этим: это более простое решение. Как установить регион: читайте на ...

  1. см. «Как сделать прямоугольник с закругленными углами формы или круглой или треугольной формы» здесь, в SO, чтобы узнать, как установить Region of Form в RoundedRect: эта запись SO имеет несколько других ссылок в нем примеры кода: ссылка, упомянутая здесь Zyphrax, использует ту же базовую технику.

  2. Поэкспериментируйте с настройками CreateRoundRect, чтобы получить нужный эффект закругленного угла.

0 голосов
/ 30 января 2010

Вы можете взять обычную форму и изменить ее, чтобы она выглядела как ваш скриншот:

  1. Установите для свойства FormBorderStyle значение Нет
  2. Закруглите углы вашей формы: подробнее здесь
  3. (Расширьте стекло, если хотите: подробнее здесь , только Vista или выше)
  4. Установите фон на Белый и добавьте некоторые элементы управления, чтобы завершить его
0 голосов
/ 30 января 2010

Похоже, вам нужен Windows 7 API Code Pack, в котором некоторые API обратно совместимы с Vista. Поскольку конкретная версия Windows не указана, я не могу сказать конкретно ... вы можете посмотреть здесь и здесь на CodeProject, как это выполняется.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

...