Bazen uygulamalarımızın birden fazla monitörün bağlı olduğu bir sistemde ikincil ya da diğer monitörlerde çalışmasını isteriz. Bunu yapabilmek için uygulayacağımız mantık şu olmalıdır. İlk önce hangi monitörde çalışmasını istiyorsak o monitörün çalışma alanını tesbit etmeliyiz. Daha sonra uygulamamızın ana ekranını bu çalışma alanına göre konumlandırmalıyız.

İşin mantığını kaptığımıza göre gelelim pratikte neler yapabiliyoruz. Öncelikle WPF uygulamamızda bunu yapabilmek için System.Windows.Forms dll dosyasını projemize referans olarak eklemeliyiz. Çünkü sistemdeki monitör bilgilerine bu dosyada bulunan Screen sınıfını kullanarak erişeceğiz. Screen sınıfında AllScreen  sistemdeki tüm ekranların bir dizisi bulunmaktadır. Bu diziden uygulamamızın çalışacağı ekranı belirledikten sonra çalışma alanını alıyoruz ve ana ekranımızın konumunu bu bilgilerle eşleştiriyoruz. Adım adım yapacak olursak:

1. App.xaml dosyasından  StartupUri="MainWindow.xaml" tagını  siliyoruz.

2. App.xaml.cs dosyasına gelip OnStartup metodunu ezerek uygulamamazın çalışacağı form ekranının pozisyonunu ayarlıyoruz ve gösteriyoruz.

protected override void OnStartup(StartupEventArgs e)  
        {
            base.OnStartup(e);
            MainWindow secondaryWind = new MainWindow();
            secondaryWind.WindowStartupLocation = WindowStartupLocation.Manual;
            if (System.Windows.Forms.SystemInformation.MonitorCount > 1)
            {
                //Sisteme bağlı ikinci monitörün çalışma alanı
                System.Drawing.Rectangle workingArea = System.Windows.Forms.Screen.
            AllScreens[1].WorkingArea;
                secondaryWind.Left = workingArea.Left;
                secondaryWind.Top = workingArea.Top;
                secondaryWind.Width = workingArea.Width;
                secondaryWind.Height = workingArea.Height;
                secondaryWind.WindowStyle = WindowStyle.None;
                secondaryWind.Topmost = true;
                secondaryWind.Show();
            }
        }

Son olarak da MainWindow un Load olayında penceremizi tam ekran yapıyoruz. Farklı bir monitörde uygulamamızı direk başlatmamız için tam ekran olması gerekmektedir.

this.WindowState = WindowState.Maximized;

Kaynak Kod

Demo.zip (26,02 kb)

About the Author