Переместить форму на указанный экран
Я пытаюсь выяснить, как переместить указанную систему.Окна.Формы.Форма на другой, чем основной экран. У меня есть ComboBox со списком доступных экранов, где пользователь выбирает любой экран, который ему нравится, и мое приложение должно переместить одно из своих окон на этот экран.
У меня есть только один экран на моем ноутбуке и нет внешнего монитора, поэтому ComboBox на моем компьютере предлагает только один вариант. Я думаю, minimalising нужные окна, перемещая его в левом углу в центре экран границы и maximilising будет делать работу, верно? Я просто не могу это проверить. Это хороший путь?
спасибо заранее!
1 ответов
вот что я сделал, как простой тест...
я добавил простой класс-оболочку, чтобы я мог изменить то, что происходит при вызове ToString (я только хотел увидеть имя, указанное в поле со списком)
private class ScreenObj
{
public Screen screen = null;
public ScreenObj(Screen scr)
{
screen = scr;
}
public override string ToString()
{
return screen.DeviceName;
}
}
в событии загрузки формы я добавил следующее:
foreach(Screen screen in Screen.AllScreens)
{
cboScreens.Items.Add(new ScreenObj(screen));
}
и для выбранного события изменения индекса поля со списком у меня было это:
private void cboScreens_SelectedIndexChanged(object sender, EventArgs e)
{
object o = cboScreens.SelectedItem;
if(null == o)
return;
ScreenObj scrObj = o as ScreenObj;
if(null == scrObj)
return;
Point p = new Point();
p.X = scrObj.screen.WorkingArea.Left;
p.Y = scrObj.screen.WorkingArea.Top;
this.Location = p;
}
он переместил форму в верхний левый угол каждого из моих экранов.