DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ステータスバーにプログレスバーを表示させるには?

環境/言語:[WinXP SP1/ VB.NET Standard2002/.NET Framework 1.1]
分類:[.NET]

http://ukamen.hp.infoseek.co.jp/Programming1/StatusBar/
上記サイト(C#でのやり方ですが)を参考にしてみたのですが、

Step10
 ステータスバーの DrawItem イベントハンドラに OnDrawItem を追加

というのができません。
VB.NETにはないのか、Standardにはないのか、設定が悪いのかわからないのですが、
プロパティウィンドウにDrawItemという項目がありません。

他の方法でも、どうにかステータスバーにプログレスバーを表示させることはできないでしょうか。
よろしくお願いします。
> プロパティウィンドウにDrawItemという項目がありません。
それはステータスバーのDrawItemはプロパティではなく、イベントであるためです。
VC#のプロパティウィンドウにはプロパティのほかにイベントも表示されるのですが、VBではプロパティウィンドウからイベントを設定することはできません。

手動でコードを書いてイベントを処理するしかないようですが(ひょっとしたらC#と同じようにGUIからイベントハンドラを追加できる方法があるかもしれませんが)、VBではプロシージャの宣言のあとに「Handles (対象となるイベント)」と書くことでそのイベントを所有するインスタンスが作成(New)されたときにイベントとそのプロシージャが結び付けられます。

Private Sub StatusBar1_DrawItem(ByVal sender As Object, ByVal e As StatusBarDrawItemEventArgs) Handles StatusBar1.DrawItem
Dim rect As Rectangle
Dim sb As StatusBar = sender

If e.Panel Is Me.StatusBarPanelProgressBar Then
rect = e.Bounds
Me.ProgressBar1.SetBounds(sb.Location.X + rect.X, sb.Location.Y + rect.Y, rect.Width, rect.Height)
End If
End Sub
返信ありがとうございます。

コードで書けばできるんですね。
勉強になりました。

> (ひょっとしたらC#と同じようにGUIからイベントハンドラを追加できる方法があるかもしれませんが)

できそうな気がして探してみたのですが、見つけられませんでした・・・。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板