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

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

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

Re[5]: VB.Netでラベルを表示させる方法を教えてください。


(過去ログ 46 を表示中)

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

■24750 / inTopicNo.1)  VB.Netでラベルを表示させる方法を教えてください。
  
□投稿者/ たけちゃん (1回)-(2008/09/09(Tue) 10:57:25)

分類:[VB.NET/VB2005] 

VB.Netでボタン押下時にラベルを表示し、処理が終了したらラベルを非表示にするようにしたいのですが
上手くできません。ラベルはLabel3です。
どなたか教えて頂けないでしょうか。

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        '参照先、保存先、自動生成ボタンのコントロールを非表示。
        Me.Button1.Visible = False
        Me.Button3.Visible = False
        Me.Button4.Visible = False
        'テキストボックス1、テキストボックス2のコントロールを非表示。
        Me.TextBox2.Visible = False
        Me.TextBox3.Visible = False
        'ラベル1、ラベル2のコントロールを非表示。
        Me.Label1.Visible = False
        Me.Label2.Visible = False
        'ラベル3のコントロールを表示。
        Me.Label3.Visible = True
        'Progress Barのコントロールを表示。
        Me.ProgressBar1.Visible = True
        'ProgressBar1の設定
        Me.ProgressBar1.Minimum = 0
        Me.ProgressBar1.Maximum = 10

        MsgBox("自動生成開始")

        Dim i As Integer
        For i = 1 To 10

            'ProgressBar1の値を変更する
            Me.ProgressBar1.Value = i

            '1秒間待機する(本来なら何らかの処理を行う)
            System.Threading.Thread.Sleep(1000)

        Next i

        '参照先、保存先、自動生成ボタンのコントロールを表示。
        Me.Button1.Visible = True
        Me.Button3.Visible = True
        Me.Button4.Visible = False
        'テキストボックス1、テキストボックス2のコントロールを表示。
        Me.TextBox2.Visible = True
        Me.TextBox3.Visible = True
        'ラベル1、ラベル2のコントロールを表示。
        Me.Label1.Visible = True
        Me.Label2.Visible = True
        'ラベル3のコントロールを非表示。
        Me.Label3.Visible = False
        'Progress Barのコントロールを非表示。
        Me.ProgressBar1.Visible = False
        'ProgressBar1の設定
        Me.ProgressBar1.Value = 0

        Flag1 = 0
        Flag2 = 0

    End Sub

引用返信 編集キー/
■24753 / inTopicNo.2)  Re[1]: VB.Netでラベルを表示させる方法を教えてください。
□投稿者/ オガシン (80回)-(2008/09/09(Tue) 11:22:09)
どううまくいきませんか?

提示されているコンポーネント(ボタンとかラベルとか)は全てデザイナ上に
配置していますか?
#してる、してないで若干かわってきます。
#してない場合はMe.をタイプした時点でインテリセンスがきかないので
#そこでエラーがでると思いますが。

VB.NETのソリューションエクスプローラーで「全てのファイルを表示」(←見たいなやつ^^;)
をクリックすると、デザイナのプログラムが見れます。
そのプログラムを参考にするもの良いかと思います。
引用返信 編集キー/
■24754 / inTopicNo.3)  Re[1]: VB.Netでラベルを表示させる方法を教えてください。
□投稿者/ 魔界の仮面弁士 (839回)-(2008/09/09(Tue) 11:27:25)
No24750 (たけちゃん さん) に返信
> VB.Netでボタン押下時にラベルを表示し、
Visible 切り替え、または Label コントロールの動的生成/削除で対応できますね。


> 処理が終了したらラベルを非表示にするようにしたいのですが
「処理」とは、どのような物でしょうか?

もし時間のかかる処理であれば、BackgroundWorker クラスを用いて、
 (1) Label を表示する。
 (2) BackgroundWorker.RunWorkerAsync メソッドで処理開始要求を投げる。
 (3) BackgroundWorker.DoWork イベントにて、実際の「時間のかかる処理」を行う。
 (4) BackgroundWorker.RunWorkerCompleted イベントにて、Label を非表示にする。
といった手順にすればよろしいかと。

そして、プログレスバーによる進捗表示も必要であれば、あわせて、
 WorkerReportsProgress プロパティ … 進捗表示を行う場合は True
 ReportProgress メソッド … 作業スレッドが、進捗報告を行うためのメソッド
 ProgressChanged イベント … メインスレッドにて、進捗状況をプログレスバー等に表示させる
のようにするとか。


> System.Threading.Thread.Sleep(1000)
コントロールを持つメインスレッドを、Sleep で止めてしまってはまずいかと。
引用返信 編集キー/
■24755 / inTopicNo.4)  Re[2]: VB.Netでラベルを表示させる方法を教えてください。
□投稿者/ たけちゃん (2回)-(2008/09/09(Tue) 11:32:11)
No24753 (オガシン さん) に返信

返信ありがとうございます。

> どううまくいきませんか?
>
> 提示されているコンポーネント(ボタンとかラベルとか)は全てデザイナ上に
> 配置していますか?

しています。

> #してる、してないで若干かわってきます。
> #してない場合はMe.をタイプした時点でインテリセンスがきかないので
> #そこでエラーがでると思いますが。
>
> VB.NETのソリューションエクスプローラーで「全てのファイルを表示」(←見たいなやつ^^;)
> をクリックすると、デザイナのプログラムが見れます。
> そのプログラムを参考にするもの良いかと思います。

'ラベル3のコントロールを表示。
Me.Label3.Visible = True
この処理で"自動生成"のラベルを表示させたいのですがMsgBox("自動生成開始")をコメントアウトすると
表示させません。MsgBox("自動生成開始")のコメントをはずすと表示されます。何故なのでしょうか?
引用返信 編集キー/
■24757 / inTopicNo.5)  Re[3]: VB.Netでラベルを表示させる方法を教えてください。
□投稿者/ PATIO (106回)-(2008/09/09(Tue) 12:00:45)
No24755 (たけちゃん さん) に返信

> 'ラベル3のコントロールを表示。
> Me.Label3.Visible = True
> この処理で"自動生成"のラベルを表示させたいのですがMsgBox("自動生成開始")をコメントアウトすると
> 表示させません。MsgBox("自動生成開始")のコメントをはずすと表示されます。何故なのでしょうか?

VBは使いませんけれど、基本は同じだと思うので書き込みます。
Windowsでは描画処理と言うのは基本的には優先順位が低い処理です。
なので他の仕事で忙しいと描画処理は後回しになります。
通常は特定のイベントハンドラが終わるまで描画関数を呼んでも後回しにされます。
イベントハンドラの処理が終わって初めて描画処理が呼ばれるイメージです。
なので、今の書き方だとButton4_Clickの処理が全て終わってから画面の更新が行なわれるので
最初の方の可視/不可視の制御の意味が全く無くなっていると思います。
この辺は、イベントドリブンと言うWindowsの基本的なしくみから来る話なので
その辺の勉強をされた方が良いと思います。

引用返信 編集キー/
■24772 / inTopicNo.6)  Re[4]: VB.Netでラベルを表示させる方法を教えてください。
□投稿者/ たけちゃん (3回)-(2008/09/09(Tue) 13:42:11)
No24757 (PATIO さん) に返信
> ■No24755 (たけちゃん さん) に返信
>
>>'ラベル3のコントロールを表示。
>> Me.Label3.Visible = True
>>この処理で"自動生成"のラベルを表示させたいのですがMsgBox("自動生成開始")をコメントアウトすると
>>表示させません。MsgBox("自動生成開始")のコメントをはずすと表示されます。何故なのでしょうか?
>
> VBは使いませんけれど、基本は同じだと思うので書き込みます。
> Windowsでは描画処理と言うのは基本的には優先順位が低い処理です。
> なので他の仕事で忙しいと描画処理は後回しになります。
> 通常は特定のイベントハンドラが終わるまで描画関数を呼んでも後回しにされます。
> イベントハンドラの処理が終わって初めて描画処理が呼ばれるイメージです。
> なので、今の書き方だとButton4_Clickの処理が全て終わってから画面の更新が行なわれるので
> 最初の方の可視/不可視の制御の意味が全く無くなっていると思います。
> この辺は、イベントドリブンと言うWindowsの基本的なしくみから来る話なので
> その辺の勉強をされた方が良いと思います。
>
解決済み
引用返信 編集キー/
■24773 / inTopicNo.7)  Re[3]: VB.Netでラベルを表示させる方法を教えてください。
□投稿者/ たくボン (21回)-(2008/09/09(Tue) 13:44:58)
No24755 (たけちゃん さん) に返信
> Me.Label3.Visible = True
> この処理で"自動生成"のラベルを表示させたいのですがMsgBox("自動生成開始")をコメントアウトすると
> 表示させません。MsgBox("自動生成開始")のコメントをはずすと表示されます。何故なのでしょうか?

まず、"自動生成"について確認。
@Label3.Textの文字列が「自動生成」なのか?
Aコード内でLabelインスタンスを生成してFormのControlsに追加して表示させたいのか?

@ならば、魔界の仮面弁士さんの言うようにBackgroundWorkerで処理をする。
Aならばオガシンさんの言うようにプロジェクトエクスプローラーで「すべてのファイルを表示する」に切り替えて、拡張子.Designer.vbを参考にしながら動的にコントロールを生成する方法を勉強するのが良いかと思います。
引用返信 編集キー/
■25162 / inTopicNo.8)  Re[5]: VB.Netでラベルを表示させる方法を教えてください。
□投稿者/ たけちゃん (7回)-(2008/09/16(Tue) 14:11:57)
No24772 (たけちゃん さん) に返信
> ■No24757 (PATIO さん) に返信
>>■No24755 (たけちゃん さん) に返信
>>
> >>'ラベル3のコントロールを表示。
> >> Me.Label3.Visible = True
> >>この処理で"自動生成"のラベルを表示させたいのですがMsgBox("自動生成開始")をコメントアウトすると
> >>表示させません。MsgBox("自動生成開始")のコメントをはずすと表示されます。何故なのでしょうか?
>>
>>VBは使いませんけれど、基本は同じだと思うので書き込みます。
>>Windowsでは描画処理と言うのは基本的には優先順位が低い処理です。
>>なので他の仕事で忙しいと描画処理は後回しになります。
>>通常は特定のイベントハンドラが終わるまで描画関数を呼んでも後回しにされます。
>>イベントハンドラの処理が終わって初めて描画処理が呼ばれるイメージです。
>>なので、今の書き方だとButton4_Clickの処理が全て終わってから画面の更新が行なわれるので
>>最初の方の可視/不可視の制御の意味が全く無くなっていると思います。
>>この辺は、イベントドリブンと言うWindowsの基本的なしくみから来る話なので
>>その辺の勉強をされた方が良いと思います。
>>
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -