2015-10-23 45 views
1

這是我到目前爲止,但它只在主監視器上打開。我的目標主要是在與單擊按鈕相關的監視器上打開文件。如何以最大窗口大小從資源管理器打開文件到特定監視器上?

private void Form1_Load(object sender, EventArgs e) 
    { 
     Point btnTopLeft = new Point(15, 15); 
     foreach (var screen in Screen.AllScreens) 
     { 
      Button btn = new Button(); 
      btn.Text = screen.DeviceName; 
      btn.Size = new Size(100, 23); 
      btn.Location = btnTopLeft; 


      btn.Tag = screen; 
      btn.Click += Btn_Click; 

      this.Controls.Add(btn); 
      btnTopLeft.Offset(0, btn.Height + 7); 
     } 
    } 

    private void Btn_Click(object sender, EventArgs e) 
    { 
     if (sender == null || !(sender is Button)) 
      return; 
     var btn = (Button)sender; 

     if (btn.Tag == null || !(btn.Tag is Screen)) 
      return; 
     var screen = (Screen)btn.Tag; 

     System.Diagnostics.Process.Start("explorer.exe", @"c:\"); 

    } 
+0

你想「打開一個文件」?或者你只是指在特定目錄中打開資源管理器? –

+1

[啓動應用程序並將其發送給第二個監視器?](http://stackoverflow.com/questions/3750113/launch-an-application-and-send-it-to-second-monitor) – Huntt

回答

0

嘗試使用Screen.GetBounds方法。

我相信這會給你哪些監視你的按鈕大多-是 https://msdn.microsoft.com/en-us/library/h6dba0zt%28v=vs.110%29.aspx

這會給你該監控矩形大多是上 https://msdn.microsoft.com/en-us/library/5z2btd02%28v=vs.110%29.aspx

你也可以給它一個點,並且它將返回該點的監視器。

一旦找出它所在的監視器,您可以再次使用Screen類來獲取監視器的邊界並設置應用程序的界限。

Ex。

this.Bounds = Screens.AllScreens[1].Bounds; 

這就是我首先要做的,儘管可能有更好的方法。希望這可以幫助。

相關問題