Nie robiłem nigdy czegoś takiego ale sądzę, że klasa
System.Windows.Forms.Screen
powinna być pomocna. Przy pomocy właściwości
AllScreens
dobieramy się do dostępnych ekranów. Teraz odczytujemy właściwość
Bounds
dla każdego ekranu i przy jej pomocy ustawiamy położenie okien. Moim zdaniem powinno działać ale nie mam teraz dostęp do dwóch monitorów więc głowy nie dam. Jakiś gotowy kod masz tutaj:
http://www.codeproject.com/KB/cs/managemonitor.aspx
Przy okazji pamiętaj o takim scenariuszu. Masz dwa monitory. Wyświetlasz okna aplikacji na drugim. Użytkownik odłącza drugi monitor. Jeśli aplikacja zapisuje w preferencjach położenie swoich okien to przy jej uruchomieniu może się okazać, że jej okna nie są widoczne.
Daj znać jak przetestujesz moje rozwiązanie (o ile je przetestujesz ;-) )