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(); } }