2013-05-09 115 views
-1

我使用netzero硬件來管理多個監視器的內容。我現在的解決方案在VB.Net中創建了一個窗體,它有一個像素偏移量,對應於我在控制面板中將顯示器放置在顯示器管理中的位置。每個監視器都有一個專用的表單,每個表單中都有各種對象。通過代碼而不是設計模式創建VB.Net表單

煩惱是每個表單都必須在設計時單獨創建(據我所知)。我無法制作一組表格,加上一組偏移量並通過代碼分配所有屬性。

應該有辦法做到這一點...這將簡化我的編碼和項目管理。

我在MSDN上看到的是要麼在我的頭上,要麼沒有幫助。

回答

0

這在代碼中很簡單。你想要製作同樣形式的許多實例。在這種情況下,我已經創建了名爲frmTest設計一種形式,我在代碼中創建許多情況下,所謂的frmNew:

Public Sub Main() 
    For x = 100 To 400 Step 100 
     For y = 100 To 700 Step 200 
      Dim frmNew As New frmTest 
      frmNew.Show() 
      frmNew.Top = x 
      frmNew.Left = y 
      frmNew.Height = 100 
      frmNew.Width = 200 
     Next 
    Next 
End Sub 

我剛纔用了兩個循環增加x和y的值,但你可以從這樣做一個數據庫或配置文件很容易。

This is how it displays

+0

I f有類似的答案,但還沒有在硬件上測試過。你的代碼的問題是你失去了單獨的表單。我現在得到的代碼是: – Dave123 2013-05-09 11:09:00

1

我沒有在硬件上測試過這個還沒有,但它確實編譯W/O錯誤:

Public Sub makeform() 
    Dim MonitorForm(21) As Form 
    Dim MPictureBoxes(21) As PictureBox 

    Dim a As Integer 


    For i As Integer = 0 To n 'up to 21 
     MonitorForm(i) = New Form 
     MonitorForm(i).Name = "Form" & (i + 1) 
     MonitorForm(i).Text = "Form" & (i + 1) 
     MonitorForm(i).Controls.Add(MPictureBoxes(i)) 
     MonitorForm(i).Location= new Point (x(i), y(i)) 
     With MPictureBoxes(i) 
      .Name = "Picture Box " & Convert.ToString(i) 
      .Image = Image.FromFile(CurrentPic(i)) 
      .Location = New System.Drawing.Point(0, 0) 
      .Size = New Size(1920, 1080) 

      ' Note you can set more of the PicBox's Properties here 

     End With 

    Next 
    End Sub 

我哪裏出了毛病,我在這個嘗試是試圖做到這一點這樣

昏暗的監視器(21)作爲新形式

這並不工作,其次是顯示器(我)昏暗的監視器(21)表之間的差異=新形式 對於我目前對類,命名空間等的理解來說太簡單了。

1

那麼,我不得不放棄這種方法,並回到在設計時創建n個表格(這意味着他們有form2 ... form22的名稱,把他們中的每個人放在設計的手動起始位置模式,似乎沒有辦法用一組形式來做到這一點,所以我構建的代碼是圍繞着form2的混亂形成的... forms22工作得很好,只是維護和精心製作而已

解決方案可能在於system.screen類,但是這方面的文檔對我來說太高級了,除了提取關於有多少個屏幕的數據之外,我沒有找到好的代碼示例 - 沒有關於寫給他們的信息