C# Winform/WPF 開發分屏顯示應用程序(GOOGLE: 控制winform顯示到哪一個螢幕)

C# Winform/WPF 開發分屏顯示應用程序(GOOGLE: 控制winform顯示到哪一個螢幕)

C# Winform/WPF 開發分屏顯示應用程序(GOOGLE: 控制winform顯示到哪一個幕)


資料來源: https://blog.csdn.net/soft2buy/article/details/7082668


基本說明

獲取當前系統連接的屏幕數量: Screen.AllScreens.Count();
獲取當前屏幕的名稱:string CurrentScreenName = Screen.FromControl(this).DeviceName;
獲取當前屏幕對象:Screen CurrentScreen = Screen.FromControl(this);
獲取當前鼠標所在的屏幕:Screen CurrentScreen = Screen.FromPoint(new Point(Cursor.Position.X, Cursor.Position.Y));


Winform Code

//在窗体的OnLoad事件中调用该方法
protected void Form1_OnLoad(...) {
    showOnMonitor(1);//index=1
}
 
private void showOnMonitor(int showOnMonitor) 
{ 
    Screen[] sc; 
    sc = Screen.AllScreens; 
    if (showOnMonitor >= sc.Length) {
        showOnMonitor = 0;
    }
 
 
    this.StartPosition = FormStartPosition.Manual; 
    this.Location = new Point(sc[showOnMonitor].Bounds.Left, sc[showOnMonitor].Bounds.Top);
    // If you intend the form to be maximized, change it to normal then maximized.
    this.WindowState = FormWindowState.Normal;
    this.WindowState = FormWindowState.Maximized;
}


WPF Code

protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
 
            Window1 w1 = new Window1();
            Window2 w2 = new Window2();
 
 
            Screen s1 = Screen.AllScreens[0];
            Screen s2 = Screen.AllScreens[1];
 
            Rectangle r1 = s1.WorkingArea;
            Rectangle r2 = s2.WorkingArea;
 
            w1.Top = r1.Top;
            w1.Left = r1.Left;
 
            w2.Top = r2.Top;
            w2.Left = r2.Left;
 
            w1.Show();
            w2.Show();
 
            w2.Owner = w1;
 
 
        }

注意:一定應該在窗體加載前,判斷所要顯示的屏幕是否存在,否則會報錯!

2 thoughts on “C# Winform/WPF 開發分屏顯示應用程序(GOOGLE: 控制winform顯示到哪一個螢幕)

  1. C# WINFORM/WPF 開發多螢幕 顯示 應用程序(GOOGLE: 控制WINFORM顯示到哪一個螢幕)

  2. c# winforms 延伸螢幕 中間顯示 [ChatGPT 回復 確定可用]


    using System;
    using System.Windows.Forms;

    namespace YourNamespace
    {
    public partial class YourForm : Form
    {
    public YourForm()
    {
    InitializeComponent();
    }

    private void YourForm_Load(object sender, EventArgs e)
    {
    // 取得延伸螢幕的工作區大小
    Screen extendedScreen = Screen.AllScreens[1]; // 若延伸螢幕為主要螢幕,請使用索引 0
    Rectangle workingArea = extendedScreen.WorkingArea;

    // 計算視窗的位置
    int x = workingArea.Left + (workingArea.Width - Width) / 2;
    int y = workingArea.Top + (workingArea.Height - Height) / 2;

    // 設定視窗的位置
    Location = new Point(x, y);
    }
    }
    }

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *