Вот что я сделал, как простой тест ...
Я добавил простой класс-обертку, чтобы я мог изменить то, что происходит при вызове 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;
}
Он переместил форму в верхний левый угол каждого из моих экранов.