■ その他の変更

  • 特殊オブジェクト
  • ドラッグ & ドロップ
  • DDE はサポートされなくなる

変更ポイント

特殊オブジェクト

特殊オブジェクトはなくなります。そして、それに代わるパワーアップされた機能、または Visual Basic 6.0 互換機能が提供されるものを紹介します。

App オブジェクト

アプリケーションに関する情報は、.NET Framework クラスライブラリにある Assembly クラスが提供します。または、Visual Basic 6.0 互換機能 (VB6.XXX()) を利用することもできます。

たとえば、App.Path プロパティで取得していた 「実行時のパス名」 は、System.Reflection.Assembly.GetExecutingAssembly.Location プロパティ、または、VB6.GetPath() メソッドで取得できます。互換クラスはオーバーヘッドがあるため、前者がお勧めです。

Debug オブジェクト

対応する機能が .NET Framework クラスライブラリにより提供されています。たとえば、Debug.Print メソッドで実現していたデバッグウィンドウへの表示は、System.Diagnostics.Debug.WriteLine() メソッドを利用できます。

Screen オブジェクト

スクリーンに関する情報は、.NET Framework クラスライブラリにある Screen クラスが提供しますが、Visual Basic 6.0 の Screen オブジェクトと共通するプロパティ、メソッドは多くありません。

Err オブジェクト

Err オブジェクトは引き続き利用可能です。例外処理との関連については、第 4 章の 「エラー処理 (例外処理) 」 を参照してください。

Clipboard オブジェクト

クリップボードとのやり取りは、.NET Framework クラスライブラリにある Clipboard クラスが提供します。 Visual Basic 6.0 の Clipboard オブジェクトより多くの機能、多くのクリップボード形式をサポートします。

Printer オブジェクト

プリンタへの出力機能は、.NET Framework クラスライブラリにある PrintDocument クラスが提供します。また、これ以外にもプリンタやページの設定、印刷ダイアログやプレビューの機能を提供するクラスを利用できます。

ドラッグ & ドロップ

オブジェクトモデルが大きく変更されました。

DDE

サポートされなくなりました。

アップグレードウィザードによる変更点

特殊オブジェクト

特殊オブジェクトは自動アップグレードされるものとされないものがあります。

App オブジェクト

たとえば、App.ExeName は VB6.GetExeName() に、App.Path は VB6.GetPath() にそれぞれ変更されます。オーバーヘッドを考慮し、アップグレード後、手動で Assembly クラスのメソッド、プロパティに修正するとよいでしょう。

Debug オブジェクト

たとえば、Debug.Print は System.Diagnostics.Debug.WriteLine() に変更されます。

Screen オブジェクト

対応するメソッドに置き換えられるものもあります。たとえば、Screen.Height プロパティは、System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height プロパティに変更されます。

Err オブジェクト

そのまま利用できるため、変更はありません。

以上のように、対応するメソッドなどがあれば、それに自動アップグレードされます。しかし、Clipboard オブジェクトや Printer オブジェクトのように、オブジェクトモデルが大きく変更されているオブジェクトについては、自動ではアップグレードされません。

ドラッグ & ドロップ

オブジェクトモデルが大きく異なるため、Visual Basic 6.0 のドラッグ & ドロッププロパティとメソッドはアップグレードされません。

DDE

サポートされないため、すべてコメントアウトされます。

PlusOneドラッグ & ドロップのサンプル

「本日のランチ」 「ドリンク」 「ケーキ」 をドラッグし、購入リストにドロップすると、リストに追加されるアプリケーションです (図 17)。

図 17:[本日のランチ]ボタンをドラッグし、右側のリスト内にドロップ

図 17:[本日のランチ]ボタンをドラッグし、右側のリスト内にドロップ

サンプルの作り方

  1. コントロールを配置します。
  2. プロパティを設定します。ListBox コントロールの AllowDrop プロパティを True に設定します。
  3. コーディングします。リスト 2 を追加すれば、できあがり!
                    
' ボタン上でマウスをダウンするとドラッグ開始  (Button2、3 も同様に記述) 
Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
        Handles Button1.MouseDown
    Button1.DoDragDrop(Button1.Text, DragDropEffects.Copy Or DragDropEffects.Move)
End Sub

' リスト上にドラッグ中のマウスが入ってくると期待したデータ形式どうかをチェック→アイコンを変更
Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _
        Handles ListBox1.DragEnter
    If (e.Data.GetDataPresent(DataFormats.Text)) Then
        e.Effect = DragDropEffects.Copy
    Else
        e.Effect = DragDropEffects.None
    End If
End Sub

' リスト上でドロップしたとき、リストにアイテム (Button の Text) を追加
Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _
        Handles ListBox1.DragDrop
    ListBox1.Items.Add(e.Data.GetData(DataFormats.Text).ToString)
End Sub

リスト 2:ドラッグ & ドロップサンプルのコード