共用方式為


Visual Basic 6.0 使用者可用的螢幕物件

更新:2007 年 11 月

Visual Basic 6.0 的 Screen 物件在 Visual Basic 2008 中沒有直接的對等用法,但是其中大部分功能都可以使用 .NET Framework 來複製。

概念上的差異

在 Visual Basic 6.0 中,Screen 物件會提供應用程式之使用中表單和控制項的存取、提供應用程式在螢幕上所顯示位置的相關資訊,並且可讓您控制游標的外觀。

在 Visual Basic 2008 中,沒有 Screen 物件的直接對等用法,但是其中大部分功能都可以使用 .NET Framework 來複製。

注意事項:

Visual Basic 2008 的確有 Screen 屬性,也就是 My.Computer.Screen。但與 Visual Basic 6.0 Screen 物件不同的是,My.Computer.Screen 只會傳回唯讀的螢幕資訊,例如裝置名稱、工作區域和色彩深度。如需詳細資訊,請參閱 My.Computer.Screen 屬性

ActiveControl 屬性

在 Visual Basic 6.0 中,Screen 物件的 ActiveControl 屬性是用來判斷擁有焦點 (Focus) 的控制項。ActiveControl 屬性可以用在全域容量中,例如 Screen.ActiveControl,在其中傳回目前已選取表單上的現用控制項。如果參考特定表單 (例如 Form2.ActiveControl),則當參考的表單為使用中時,ActiveControl 會指定將擁有焦點的控制項。

Visual Basic 2008 中不再有全域 ActiveControl 屬性,每個表單的執行個體 (Instance) 都有自己的 ActiveControl 屬性。參考特定表單時,這個屬性的運作方式和 Visual Basic 6.0 相同。若要判斷目前所選取表單的使用中控制項,必須先逐一查看 OpenForms 集合,並檢查 ContainsFocus 屬性,以判斷使用中的表單。

ActiveForm 屬性

在 Visual Basic 6.0 中,是使用 Screen 物件的 ActiveForm 屬性來判斷目前擁有焦點的表單。如果 MDI 父表單擁有焦點,ActiveForm 會傳回最後擁有焦點的 MDI 子表單。

在 Visual Basic 2008 中沒有全域 ActiveForm 屬性。若要判斷使用中表單,您必須逐一查看 OpenForms 集合,並找出 ContainsFocus 屬性設定為 True 的表單。

Visual Basic 2008 的 MDI 父表單 (IsMDIContainer 設定為 True 的任何表單) 都有 ActiveMDIChild 屬性,可以用來傳回使用中的子表單,而不需要使用 OpenForms 集合。

MousePointer 屬性

在 Visual Basic 6.0 中,Screen 物件的 MousePointer 屬性是用來變更游標的外觀,一旦設定後就適用於應用程式中所有的表單。

在 Visual Basic 2008 中沒有全域 MousePointer 屬性;每個表單都有 Cursor 屬性,可以用來變更該表單的游標外觀。

TwipsPerPixel 屬性

在 Visual Basic 6.0 中,Screen 物件的 TwipsPerPixelX 和 TwipsPerPixelY 屬性是用來轉換螢幕度量,從邏輯 Twip (Visual Basic 6.0 中的標準度量單位) 轉換為像素。

在 Visual Basic 2008 中,像素是標準的度量單位,不再需要轉換。

Screen 物件的程式碼變更

下列範例顯示 Visual Basic 6.0 與 Visual Basic 2008 之間的程式撰寫技巧差異。

判斷使用中控制項的程式碼變更

下列程式碼會示範從目前所選取表單上的已選取控制項,將文字複製至剪貼簿。

' Visual Basic 6.0
If TypeOf Screen.ActiveControl Is TextBox Then
    Clipboard.SetText Screen.ActiveControl.Text
End If
' Visual Basic
Dim i As Integer
For i = 0 To My.Application.OpenForms.Count - 1
  If My.Application.OpenForms.Item(i).ContainsFocus Then
    If TypeOf (My.Application.OpenForms.Item(i).ActiveControl) _
      Is TextBox Then
        My.Computer.Clipboard.SetText(My.Application.OpenForms. _
          Item(i).ActiveControl.Text)
    End If
  End If
Next

判斷使用中表單的程式碼變更

下列程式碼示範變更目前選取的表單之標題。

' Visual Basic 6.0
Screen.ActiveForm.Caption = "This is the selected form"
' Visual Basic
Dim i As Integer
For i = 0 To My.Application.OpenForms.Count - 1
  If My.Application.OpenForms.Item(i).ContainsFocus Then
    My.Application.OpenForms.Item(i).Text = _
      "This is the selected form"
  End If
Next

判斷 MDI 應用程式之使用中表單的程式碼變更

下列程式碼示範變更目前選取的 MDI 子表單之標題。

' Visual Basic 6.0
Screen.ActiveForm.Caption = "This is the selected child form"
' Visual Basic
Me.ActiveMdiChild.Text = "This is the selected child form"

Screen 物件屬性的對等用法

下表列出 Visual Basic 6.0 屬性,以及其在 Visual Basic 2008 的對等用法。文件中將視需要提供連結至解釋行為差異的主題。若 Visual Basic 2008 中沒有直接的對等用法,則提供連結至替代的主題。

屬性

Visual Basic 6.0

Visual Basic 2008對等用法

ActiveControl

My.Application.OpenForms(0).ActiveControl

ActiveForm

My.Application.OpenForms(0).ContainsFocus 或

ActiveMdiChild (MDI 應用程式)

FontCount

Fonts

新實作。列舉字型的行為不同。如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的字型處理方式

Height

My.Computer.Screen.Bounds.Height

MouseIcon

新實作。如需詳細資訊,請參閱無法設定自訂 MousePointer

MousePointer

System.Windows.Forms.Cursor

TwipsPerPixelX

TwipsPerPixelY

新實作。在 Visual Basic 2008 中,座標是以像素為單位,而不是用 Twip 做為度量單位。

Width

My.Computer.Screen.Bounds.Width

升級注意事項

當 Visual Basic 6.0 應用程式升級為 Visual Basic 2008 時,任何 Screen 物件屬性都會升級為其 Visual Basic 2008 中的對等用法。如果行為可能會不同,則在程式碼中插入升級註解。

請參閱

概念

Visual Basic 6.0 使用者可用的 App 物件

Visual Basic 6.0 使用者可用的字型處理方式

參考

My.Application.OpenForms 屬性

My.Computer.Screen 屬性