C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: モジュールでのプログレスバーの操作


(過去ログ 12 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■3452 / inTopicNo.1)  モジュールでのプログレスバーの操作
  
□投稿者/ ワンダー (1回)-(2007/05/10(Thu) 17:41:06)

分類:[VB.NET (Windows)] 

お世話になります、初めて投稿しますワンダーと申します、お願いします。

WindowsフォームにLabelコントロールとProgressBarコントロールとButtonコントロールを貼り付け、
Buttonコントロルをクリックすると1秒おきにLabelとProgressBarの内容を変え表示し、最後に値が
(i=10)フルになったら、LabelコントロールとProgressBarコントロールを非表示にするプログラムです。

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ProgressBar1.Visible = False
        Label1.Visible = False
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i As Integer

        ProgressBar1.Visible = True
        Label1.Visible = True
        ProgressBar1.Minimum = 1
        ProgressBar1.Maximum = 10
        For i = 1 To 10
            ProgressBar1.Value = i
            Label1.Text = i
            Label1.Update()
            System.Threading.Thread.Sleep(1000)
        Next i
        ProgressBar1.Visible = False
        Label1.Visible = False
    End Sub
End Class

上記の処理を、出来ればフォームより標準モジュールをCallするだけで、利用出来るようにしたいのです。

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Call Advance()
    End Sub
End Class

Module Module1
    Sub Advance()
        Dim frm As Form
        Dim lbl As Label
        Dim pbr As ProgressBar
        Dim i As Integer

        frm = New Form
        frm.Text = ""
        frm.ClientSize = New System.Drawing.Size(368, 37)
        frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
        frm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D
        frm.ControlBox = False
        frm.MaximizeBox = False
        frm.MinimizeBox = False

        lbl = New Label
        lbl.Name = "Label1"
        lbl.Size = New System.Drawing.Size(368, 16)
        lbl.BackColor = System.Drawing.Color.FromArgb(CType(255, Byte), CType(192, Byte), CType(192, Byte))
        lbl.Text = "Label1"
        frm.Controls.Add(lbl)

        pbr = New ProgressBar
        pbr.Name = "ProgressBar1"
        pbr.Size = New System.Drawing.Size(368, 16)
        pbr.Dock = System.Windows.Forms.DockStyle.Bottom
        frm.Controls.Add(pbr)
	'===困っている場所==============================================================================
        frm.ShowDialog()						

        'pbr.Minimum = 1						
        'pbr.Maximum = 10
        'For i = 1 To 10
        '    pbr.Value = i
        '    lbl.Text = i
        '    lbl.Update()
        '    System.Threading.Thread.Sleep(1000)
        'Next i

        'frm.ShowDialog()
        'frm.Close()
	'===============================================================================================
    End Sub
End Module

標準モジュールではコントロールをフォームに貼り付けるまではうまくいったのですが...
frm.ShowDialog()で止まってしまいます、どの様にコードを組めばいいでしょうか、考え方がまずいの
でしょうか、クラスモジュールにて考えればいいのでしょうか、困って迷ってます。

VB6.0から.NET2003に切り替えたばかりの初心者です、ご教授宜しくお願いします。

引用返信 編集キー/
■3453 / inTopicNo.2)  Re[1]: モジュールでのプログレスバーの操作
□投稿者/ HIRO (26回)-(2007/05/10(Thu) 17:54:21)
HIRO さんの Web サイト
スプラッシュスクリーンのイメージですよね?

こちらが参考になるかもしれません
http://www.atmarkit.co.jp/fdotnet/dotnettips/223splashscrn/splashscrn.html
引用返信 編集キー/
■3455 / inTopicNo.3)  Re[2]: モジュールでのプログレスバーの操作
□投稿者/ ダッチ (126回)-(2007/05/10(Thu) 18:06:06)
> frm.ShowDialog()で止まってしまいます
ShowDialog メソッドのドキュメントは参照していますか?
「このメソッドが呼び出されると、次に続くコードは、ダイアログ ボックスが閉じるまで実行されません。」と記載されていますよ。

Form.ShowDialog メソッド ()
http://msdn2.microsoft.com/ja-jp/library/c7ykbedk(VS.80).aspx

> どの様にコードを組めばいいでしょうか、考え方がまずいの
> でしょうか、クラスモジュールにて考えればいいのでしょうか
Form の UI は Form がやるべきだと思います。
標準モジュールを使ってゴニョゴニョと処理を組むよりは、Form に処理を組んでおいて、後は Form を表示するだけの方が扱いやすいと思いませんか?

VB6 から VB.NET に移行しているのであれば、こちらのサイトなど参考になると思います。

VB マイグレーション Tips
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/
引用返信 編集キー/
■3456 / inTopicNo.4)  Re[1]: モジュールでのプログレスバーの操作
□投稿者/ はつね (156回)-(2007/05/10(Thu) 18:24:46)
はつね さんの Web サイト
No3452 (ワンダー さん) に返信
> WindowsフォームにLabelコントロールとProgressBarコントロールとButtonコントロールを貼り付け、
> Buttonコントロルをクリックすると1秒おきにLabelとProgressBarの内容を変え表示し、最後に値が
> (i=10)フルになったら、LabelコントロールとProgressBarコントロールを非表示にするプログラムです。
    :
(中略)
    :
> 上記の処理を、出来ればフォームより標準モジュールをCallするだけで、利用出来るようにしたいのです。

必ずUIが伴う処理と思いますので、そのUIを実現するフォームに処理をすべて記述して隠蔽してしまう方が良いと思います。
.NET系では隠蔽してしまっても使い勝手&作り勝手がVB6よりも良い状態がキープできると思います。

引用返信 編集キー/
■3461 / inTopicNo.5)  Re[2]: モジュールでのプログレスバーの操作
□投稿者/ 未記入 (82回)-(2007/05/10(Thu) 21:10:21)
No3456 (はつね さん) に返信
> 必ずUIが伴う処理と思いますので、そのUIを実現するフォームに処理をすべて記述して隠蔽してしまう方が良いと思います。
> .NET系では隠蔽してしまっても使い勝手&作り勝手がVB6よりも良い状態がキープできると思います。

隠蔽してしまってもという言い方は微妙かな。
VB6でも隠蔽化 + カプセル化すべきですし。
引用返信 編集キー/
■3481 / inTopicNo.6)  Re[3]: モジュールでのプログレスバーの操作
□投稿者/ ワンダー (2回)-(2007/05/11(Fri) 10:58:52)
いろいろご教授いただき感謝感激です、すばらしい掲示板ですね(^_^)

説明が分かりずらくてすいません。

VB6.0で開発してた時は、プログラム単位にProgressBarコントロールを貼り付け
処理してたのですが.NETに最近切り替していろいろ調べたところ、標準モジュール
にコントロールを貼り付けることが出来るんだったら、ProgressBarコントロール
の操作も同時に出来ないかと思い始まりました、現実的に難しいですかねー。

For --- Nextの間に判断文を入れファイル1 ファイル2 ファイル3 と読み、その
進捗状況をProgressBarコントロールで表現できればシステムで共通して使えと思う
のですが...

私もまだ.NETを始めたばかりの初心者です、参考書ネット等ではいろいろ勉強した
つもりなのですが、隠蔽とかクラスとか言われてもまだあまり分かってません、
(すいません)出来れば簡単で参考になるホームページなどあれば教えていただきた
いと思います。
引用返信 編集キー/
■3482 / inTopicNo.7)  Re[4]: モジュールでのプログレスバーの操作
□投稿者/ はつね (158回)-(2007/05/11(Fri) 11:11:02)
はつね さんの Web サイト
No3481 (ワンダー さん) に返信
> For --- Nextの間に判断文を入れファイル1 ファイル2 ファイル3 と読み、その
> 進捗状況をProgressBarコントロールで表現できればシステムで共通して使えと思う
> のですが...

VB6の世界でも存在している方法からすると、ProgressBarを含んだコントロールを自作して使うのはどうでしょうかという感じです。
.NETの場合、同じ実行フォルダに置けばレジストリ登録とかも不要です(ここがVB6よりも手軽な点)。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -