- ベストアンサー
VBでModule1からForm1のコントロールを操作したい
VB.NETでForm1のProgressBarをForm1.VBからではなく外部Module1.vbのサブルーチンから操作する方法はありませんか。"Dim Form1 as New Form1"などとするともうひとつフォームが開いたりしてうまくいきません。現在、下記の様にしてもうひとつ別のForm2を開いてプログレスバーを表示しております。 できるなら、Form1だけで済ませたいと思っております。 勉強不足でわかりません。どなたか教えてください。 Form2.Show() Form2.ProgressBar1.Minimum = 0 Form2.ProgressBar1.Maximum = 学習回数 Form2.ProgressBar1.Visible = True For 繰り返し = 1 To 学習回数 Form2.ProgressBar1.Value = 繰り返し Form2.lbl解析中.Text = 繰り返し Form2.Label1.Update() Form2.lbl解析中.Update() ****処理**** Next
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
外部Module1.vbのサブルーチンにFormを引数として渡しては?
その他の回答 (1)
- K-Sogacchi
- ベストアンサー率53% (50/93)
処理時に、既にForm1はShowされてるんですよね? 普通にForm1にProgressBar貼り付けておいて制御できませんか? (最初のForm2.Showを削除して、Form2をForm1に変更する) ……もしかして、そういう問題ではない? あと、Control.Updateメソッドは(私は使ったこと無いですが) たぶんヘルプに書いてあると思いますが、Invalidateメソッドと対で使うと思います。 特別な事情が無ければ、Refreshメソッド使った方が楽だと思いますよ。 ちなみに、System.Windows.Forms.Application.DoEvents() (かな? VB2005だとMy.application.DoEvents()です。これ以前の.NETは使ったこと無いので……) を使っても、たぶん更新されると思いますけどね。 アプリの反応が無くなって困る場合は、こちらの方がオススメかも。
お礼
ご回答ありがとうございました。 いろいろな手法例ありがとうございます。 研究してみます。 System.Windows.Forms.Application.DoEvents() は再描画のとき使っております。
お礼
ありがとうございました。 サブルーチンでProgressBarをObject型でByRefとして引数として受け取り、うまくいきました。