using System.Windows.Forms;
using System.Drawing;
using System.Windows.Interop;
Screen screen = Screen.FromHandle(new WindowInteropHelper(this).Handle);
int i;
for (i = 0; i < Screen.AllScreens.Length; i++)
{
if (Screen.AllScreens[i] == screen) break;
}
i++; i = i % Screen.AllScreens.Length;
this.WindowState = WindowState.Normal;
int x = 0;
for (int j = 0; j < i; j++)
{
x += Screen.AllScreens[j].Bounds.Width;
}
this.Left = x + 1;
this.WindowState = WindowState.Maximized;
Это переместит развернутое окно к следующему монитору. Я не проверял это, хотя у меня только один монитор. Переместить окно, которое не развернуто, сложнее, поскольку размер нового монитора не обязательно совпадает с размером старого монитора. Вы можете не задавать настройку WindowState и центрировать окно на экране, или получить положение x окна на текущем мониторе и добавить его в новую позицию x. При использовании последнего вам необходимо проверить, находится ли новая позиция внутри монитора.
Также обратите внимание, что это работает, только если ваши мониторы установлены рядом друг с другом. Это не будет работать, когда мониторы сложены.