2017-05-30 20 views
0

フォームとボタンがあります。ボタンを押すと、2番目のフォームがロードされます。 2番目のフォームには、サイトをロードするWebブラウザがあります。フォームの読み込み中にコンポーネントを更新する方法

これは、2番目の形式は読み込みに数秒かかるということです。だから私はエンドユーザーに伝えるために何かを実装する必要があります、ハングアップ..我々は何かをロードしようとしている。

ボタンにテキスト値クリック更新するだろう最善かつ簡単な方法:私は、フォームをロードした後、ボタンのテキストを変更するコードを持っていたロード中...

...事があり、ラベル変更されませんが、ロードされた2番目のフォームの後に変更されます! < - 私は私の研究を行い、その原因をシングルスレッド化していることを知りましたか?

私がラベルを変更した後にApplication.DoEvents()を置くと動作しますが、その過剰なものを検索して使用するべきではありませんか?多くのリソースを必要とせずにラベルを更新するには、効率的かつ効果的な方法は何でしょうか?

マイコード:

label1.Text = "Loading..." 
Application.DoEvents() 'Without this, label only changes AFTER form completes loading 
secondform.Show() 
me.hide() 
+0

他のスレッドを開始してください... – Codexer

+0

'label1.Refresh'ほとんどのユーザーのように、Webサイトに読み込みに時間がかかることがあるようです。 – Plutonix

+0

これはバックグラウンドで遅くなるウェブサイトの読み込みではありません。 2番目のフォームがペイントするのは非常に高価なものかもしれません。ウィンドウを最小化して復元することで確認してください。ブラウザが単に最初に作成するのは高価なので、2番目のフォームを再作成することで確認できます。 label1.Update()を使用するのは簡単な回避策ですが、システミックな場合はCursor.Current = Cursors.WaitCursorを使用することを検討してください –

答えて

1

私は、通常の練習は、プログラムが何かを実行している時間の間、砂時計のポインタを持つことだと思います。

また、「Webウィンドウ」の読み込みを非表示(visible = false)にして、ページがWebコントロール内に読み込まれると表示させることができます。

単なる考えです。

+0

スレッドを使用する場合は、代理人を使用して呼び出す必要があります。 – Mike

関連する問題