別のスレッド、別のクラスからコントロールを操作するには?
- 題名: 別のスレッド、別のクラスからコントロールを操作するには?
- 著者: あかつき
- 日時: 2012/08/27 20:04:58
- ID: 30863
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 別のスレッド、別のクラスからコントロールを操作するには?
- 著者: shu
- 日時: 2012/08/27 22:17:28
- ID: 30864
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 別のスレッド、別のクラスからコントロールを操作するには?
- 著者: あかつき
- 日時: 2012/08/28 9:24:33
- ID: 30865
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: 別のスレッド、別のクラスからコントロールを操作するには?
- 著者: あかつき
- 日時: 2012/08/28 11:42:32
- ID: 30866
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: 別のスレッド、別のクラスからコントロールを操作するには?
- 著者: shu
- 日時: 2012/08/28 11:55:16
- ID: 30867
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: 別のスレッド、別のクラスからコントロールを操作するには?
- 著者: あかつき
- 日時: 2012/08/30 11:52:40
- ID: 30871
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: 別のスレッド、別のクラスからコントロールを操作するには?
- 著者: あかつき
- 日時: 2012/09/19 17:24:36
- ID: 30944
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
こんにちは。質問させて頂きます。
ずばり、タイトルの通り、別のスレッド、別のクラスからコントロールを
操作するにはどうすれば良いかで悩んでいます。
色々とサイトを眺めてみて、フォームを作成したスレッドと別のスレッドから
コントロールを操作するにはデリゲートの作成が必要らしいということで
下記のようなコードを試してみたのですが、どうも上手くいきません。
意図としてはButton1を押すとBackgroundworker1が走り、その中から
TextBox1のTextを"test1"と書き換えてくれることを期待しているのですが、
実際にはButton1を押してもTextBox1に何の変化も見られません。
どうすれば書き換わるようになるのでしょうか?
以上、よろしくご回答御願い致します。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim _testClass1 As testClass1 = New testClass1
_testClass1.testsub()
End Sub
Delegate Sub Set_Control_textCallback _
(ByVal Target_Control As Control, ByVal _text As String)
Public Sub Set_Control_text(ByVal Target_Control As Control, ByVal _text As String)
If Target_Control.InvokeRequired Then
Dim d As New Set_Control_textCallback(AddressOf Set_Control_text)
Me.Invoke(d, Target_Control, _text)
Else
Target_Control.Text = _text
End If
End Sub
End Class
Public Class testClass1
Public Sub testsub()
Form1.Set_Control_text(Form1.TextBox1, "test1")
End Sub
End Class