private void TimerTick(object sender, EventArgs e)
        {
            try
            {
                Point currentPosition           = TaskBar.GetTaskBarLocation();
                Size  currentSize               = TaskBar.GetTaskBarSize();
                TaskBar.TaskBarEdge currentEdge = TaskBar.GetTaskBarEdge();

                if (lastLocation != currentPosition || lastEdge != currentEdge || lastSize != currentSize)
                {
                    lastLocation = currentPosition;
                    lastEdge     = currentEdge;
                    lastSize     = currentSize;

                    if (!isFirstRun)
                    {
                        Dock(DockedTo, ActiveScreenIndex);
                    }

                    isFirstRun = false;
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
        private void PostionBottom()
        {
            Screen activeScreen  = ActiveScreen;
            Screen taskBarScreen = Screen.FromHandle(TaskBar.GetHandle());;
            Size   taskBarSize   = TaskBar.GetTaskBarSize();

            var left  = activeScreen.Bounds.Left;
            var top   = activeScreen.Bounds.Top + activeScreen.Bounds.Height - screenResolution.ConvertYToScreen(form.Height);
            var width = activeScreen.Bounds.Width;

            var taskbarHeight = (activeScreen.DeviceEquals(taskBarScreen) ? taskBarSize.Height : 0);
            var taskbarWidth  = (activeScreen.DeviceEquals(taskBarScreen) ? taskBarSize.Width : 0);

            switch (TaskBar.GetTaskBarEdge())
            {
            case TaskBar.TaskBarEdge.Left:
                form.Top   = screenResolution.ConvertYDpi(top);
                form.Left  = screenResolution.ConvertXDpi(left + taskbarWidth);
                form.Width = screenResolution.ConvertXDpi(width - taskbarWidth);
                break;

            case TaskBar.TaskBarEdge.Top:
                form.Top   = screenResolution.ConvertYDpi(top);
                form.Left  = screenResolution.ConvertXDpi(left);
                form.Width = screenResolution.ConvertXDpi(taskbarWidth);
                break;

            case TaskBar.TaskBarEdge.Right:
                form.Top   = screenResolution.ConvertYDpi(top);
                form.Left  = screenResolution.ConvertXDpi(left);
                form.Width = screenResolution.ConvertXDpi(width - taskbarWidth);
                break;

            case TaskBar.TaskBarEdge.Bottom:
                form.Top   = screenResolution.ConvertYDpi(top - taskbarHeight);
                form.Left  = screenResolution.ConvertXDpi(left);
                form.Width = screenResolution.ConvertXDpi(width);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }