Hello everybody !!! 皆さん、programing 頑張っていますか?
皆さんと一緒に .NET プログラミングを学んでいく、「トニー電」です。今日も張り切っていきましょう。
今日は、画像をドラッグアンドドロップで表示させよう、の巻です。
■ドラッグアンドドロップのイベント
.NET プログラミングでは、ドラッグ&ドロップは非常に簡単です。既に用意されているイベントとプロパティを設定すれば簡単にできていしまいます。
覚えるところは3つ(いや、本当のところは覚えてなくてもいいんですけどね)、
- AllowDrop プロパティ
ドラッグアンドドロップを有効にします。 - DragDrop イベント
ファイルがドロップされたときに、呼び出されます。 - DragEnter イベント
ファイルがドロップされる前に、呼び出されます。
まずは、フォームを開いて、プロパティ ウィンドウで AllowDrop プロパティの値を True にします。
雷のアイコンをクリックして、イベントを表示させます。
DragDrop イベント、DragEnter イベントをダブルクリックします。
■DragEnter イベントを記述
このイベントは、ファイルをドロップするときの定番なので、そのまま書いてください。
Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
End If
End Sub
■DragDrop イベントを記述
これも定番の記述なので、そのまま書いてください。
Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
Dim fname = CType(e.Data.GetData(DataFormats.FileDrop), String())
MessageBox.Show(fname(0))
End Sub
MessageBox.Show のところは、ドロップしたファイル名を表示しているところです。
デバッグ実行して、画像ファイルをドロップすると、こんな感じになります。
■画像ファイルを切り替える
画像ファイルを読み込むには、「Bitmap クラス」というものを使います。なにやら、ややこしそうですが、.NET のプログラムでは非常に簡単に画像ファイルを読み込めるのです。
Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
Dim fname = CType(e.Data.GetData(DataFormats.FileDrop), String())
' MessageBox.Show(fname(0))
' 画像ファイルを読み込んで表示
Me.BackgroundImage = New Bitmap(fname(0))
End Sub
こんな風に、メッセージを表示しているところをコメントアウト(先頭に「'」を書きます)してしまって、フォームの BackgroundImage プロパティに Bitmap オブジェクトを貼りつけます。
「Me」というのが、フォーム自身で、「Me.BackgroundImage」というのが、フォームの BackgroundImage プロパティという意味です。
画像ファイルを読み込むときは「new Bitmap( ファイル名 )」とすればよいので、こんな風に1行で書けるわけです。
■実行してみよう
さて、デバッグ実行をしてみましょう。
この表示のところに、画像ファイルをドロップすると、
ほら、こんなに簡単に切り替えられますね。
■ヒント メソッドにコメントをつけよう
プログラムコードを書いたら、ちょっとだけコメントを付ける習慣をつけておくと良いです。たくさんのコメントはいらないのですが、後から見てわかるようにちょっとだけ、という感じですね。
メソッドのコメントは、メソッドの前の行で「'''」のように、シングルクォートを3つ書くと、自動的にコメントが書かれます。
ぜひ活用してみてください。
いよいよ、来週からは Visual Basic の詳しい文法に入ります。がしがし勉強して、がしがしプログラミングしていきましょう。
では、See you next week, bye bye !!!
