Понедельник, 29.05.2017, 04:51
Приветствую Вас Гость

Меню сайта
Форма входа
Категории раздела
Уроки по C# [2]
Здесь собраны простенькие уроки по языку С# от Wedge Team.
Уроки по C++ [1]
Здесь собраны уроки по программированию для Half-Life 2 на С++.
Уроки по Valve Hammer Editor [0]
Здесь собраны уроки по левел-дизайнингу в Valve Hammer Editor от Wedge Team и не только.
Уроки по Photoshop [0]
Здесь собраны уроки по фотошопу от Wedge Team.
Уроки по 3D Max [0]
Здесь собраны уроки по 3DMax.
Мини-чат
200
Главная » Статьи » Уроки по C#

SlideHide
Вы наверное не раз замечали, как сайтах убираются различные элементы, и
хотели бы сделать тоже самое в своей программе? Если да, то этот урок
специально для Вас.

Итак, приступим. Для начала создайте проект Приложение Windows Forms в Visual Studio 2010/2008 на языке C#.





Сделали? Тогда едем дальше.

На форму добавляем объект Button( 2 штуки ),  Panel и Timer. На Panel можете поставить изображение( Picture Box ) или текст ( Label ).
Первую кнопку называем "Свернуть", 2-ю - "Выход". На среднюю кнопку не обращаем внимания, о ней я расскажу в конце.




У таймера устанавливаем значение Interval=30 и name=SlideTimer.
Теперь все готово к написанию кода.

Жмем на 1-ю кнопку два раза, чтобы появился редактор кода.



Между фигурных скобок в
Code
private void button1_Click(object sender, EventArgs e)
вписываем:


Code

SlideTimer.Enabled = true;

Этим мы задали включение таймера после нажатия кнопки.
Теперь после
Code
public partial class Form1 : Form
  {

надо вписать
Code
int i=0;
. Этим мы задали целое число, которое пригодится для совершения операции сворачивания Panel.
После
Code

  public Form1()
  {
  InitializeComponent();
  }

впишем:
Code

  public void SlideUp()
  {

  if (i < 20)
  {

  SlidePanel.Width = SlidePanel.Width - (SlidePanel.Width * 25 / 100);
  SlidePanel.Height = SlidePanel.Height - (SlidePanel.Height * 25 / 100);
  i++;
  }
  else
  {
  SlideTimer.Enabled = false;
  }
  if (i == 20)
  {
  SlidePanel.Hide();
  SlideTimer.Enabled = false;
  }
  button1.Text="Развернуть";
  }

  public void SlideDown()
  {

   

  if (SlidePanel.Width < SlidePanel.MaximumSize.Width)
  {

  SlidePanel.Width = SlidePanel.Width + SlidePanel.MaximumSize.Width*25/100;
   
   
  }
  if (SlidePanel.Height < SlidePanel.MaximumSize.Height)
  {
  SlidePanel.Height = SlidePanel.Height + SlidePanel.MaximumSize.Height*25/100;
  }

  if(SlidePanel.Width==SlidePanel.MaximumSize.Width && SlidePanel.Height==SlidePanel.MaximumSize.Height)
  {
  SlideTimer.Enabled = false;
  i = 0;
  }
  if (i >= 20)
  {
  SlidePanel.Show();
  }
  button1.Text = "Свернуть";
  }

Этим мы задали общие события для панельки: SlideUp - панель сворачивается, SlideDown - разворачивается. Мы вынесли void'ы для того, чтобы не загромождать этими действиями событие таймера Tick, т.к можно легко запутаться. Теперь разберем алгоритм:

Сворачивание происходит в 20 стадий, т.е. пока i<20 ширина и высота панели сокращаются на 25% своей текущей длинны. Как только панель уменьшилась на 25%, к i прибавляется 1

Code
i++;

и все повторяется до тех пор, пока i не будет равна 20. Сразу же после того как i = 20, панель скрывается,
Code
SlidePanel.Hide();
и таймер останавливается
Code
SlideTimer.Enabled = false;

Тоже самое происходит и в SlideDown, но только без числа "i". В SlideDown все построено на том, что пока ширина и высота панели меньше их максимальных, к ним прибавляется 25% максимального размера. И по завершении SlideUp и SlideDown имена кнопок меняются на подходящие.

Теперь событие таймера:

Code

private void SlideTimer_Tick(object sender, EventArgs e)
  {
  if (i < 20)
  {
  SlideUp();
  }
  else
  {
  SlideDown();
  }
  }

После того как таймер запустили, он проверяет, если i<20( изначальное число), то запускается событие SlideUp, в противном случае - SlideDown.
Компилируем и смотрим что у нас вышло.

А теперь о кнопке 'Показать исходный код". Она сворачивает и разворачивает объект TextBox, находящийся в Panel, по чуть-чуть другому методу, поэтому разворачивается компонент не плавно, рывками. Этот метод можно посмотреть скачав исходный код проекта.

Категория: Уроки по C# | Добавил: HellMapper (23.03.2011) | Автор: Владимир Рымкевич W
Просмотров: 353 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0