- PR -

タスク起動について

投稿者投稿内容
ken
ベテラン
会議室デビュー日: 2005/11/03
投稿数: 64
投稿日時: 2006-03-27 21:01
いつもお世話になっております。

VB.NETでWindowsアプリケーションを作成しています。

実行プログラムをActivatedイベントに記述してEXEファイルを
作成しました。
EXEファイルをダブルクリックすると問題無く動作するのですが
EXEファイルをタスクから実行するとActivatedイベントが発生せず
実行しません。
フォームは表示されるのですがActivateされていない状態になります。
フォームを表示してから実行したい為、Loadイベントでは出来ませんでした。

何かいい方法はないでしょうか?
宜しくお願いします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-03-27 21:03

Application.Idle イベントとかどうでしょう。
ken
ベテラン
会議室デビュー日: 2005/11/03
投稿数: 64
投稿日時: 2006-03-28 08:55
Hongliangさん、ありがとうございます。

いろいろ調べてみたのですが
Application.Idle イベントの記述方法が分かりませんでした。
どこにどう記述すればいいのでしょうか?
申し訳ありませんが宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 09:21
引用:

kenさんの書き込み (2006-03-28 08:55) より:

いろいろ調べてみたのですが
Application.Idle イベントの記述方法が分かりませんでした。
どこにどう記述すればいいのでしょうか?


イベント ハンドラの書き方がわからないのでしょうか?
ハンドラの追加がわからないのでしょうか?
「いろいろ調べてみた」とありますが、書かなければ伝わらないことです。

コード:

    ' エントリ ポイント
    Protected Shared Sub Main()
        AddHandler Application.Idle, AddressOf Application_Idle
        Application.Run(New Form1())
    End Sub

    ' Application.Idle イベント
    Private Shared Sub Application_Idle(ByVal sender As Object, ByVal e As System.EventArgs)
        MessageBox.Show("Application.Idle")
    End Sub


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ken
ベテラン
会議室デビュー日: 2005/11/03
投稿数: 64
投稿日時: 2006-03-28 10:33
じゃんぬねっとさん、ありがとうございます。

Private Shared Sub Application_Idleから
FormのLabel.Textの値を変更する場合は、どうすればいいのでしょうか?
今まではMe.Label1.Text="あ"とかしてたのですがエラーになってしまします。

基本的な事が分からなくて申し訳ありません。
宜しくお願いします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 10:43
引用:

kenさんの書き込み (2006-03-28 10:33) より:

Private Shared Sub Application_Idleから
FormのLabel.Textの値を変更する場合は、どうすればいいのでしょうか?
今まではMe.Label1.Text="あ"とかしてたのですがエラーになってしまします。


そりゃ、Shared メンバ (共有メンバ) だから、インスタンス メンバにはアクセスできません。
それを意識した上で、もう少し考えてみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ken
ベテラン
会議室デビュー日: 2005/11/03
投稿数: 64
投稿日時: 2006-03-28 10:49
じゃんぬねっとさん

いろいろとご指導頂きありがとうございます。
もう少し自分なりに考えてみたいと思います。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 12:00
引用:

kenさんの書き込み (2006-03-28 10:49) より:

いろいろとご指導頂きありがとうございます。
もう少し自分なりに考えてみたいと思います。


次に覗く時は困っている時か解決した時でしょうから、少しだけ。

Form1 を起動してアプリケーションを開始する場合。
その Form1 のインスタンス メンバである TextBox1 にアクセスするには、
同一のインスタンスを用いてアクセスしなければならないわけです。

それを踏まえると、起動しようとする Form1 のインスタンスに対して、
イベント ハンドラを追加すれば、同じインスタンスにいるメンバには当然アクセスできます。

または、起動した Form1 のインスタンスをどこかに確保しておけば、
その確保したインスタンスを通して TextBox1 にはアクセスできます。
何かインスタンスばかり続くと、説明が難しい...

今回ですと、Form1 が表示された時という意味合いも兼ねてますので、
Form1 のメンバでも良いかなとも思うので前者の方法でも問題ないでしょうね。

コード:

    Protected Shared Sub Main()
        Dim hForm1 As Form1

        Try
            hForm1 = New Form1()
            AddHandler Application.Idle, AddressOf hForm1.Form_Idle
            Application.Run(hForm1)
        Finally
            If Not hForm1 Is Nothing Then
                hForm1.Dispose()
            End If
        End Try
    End Sub

    Private Sub Form_Idle(ByVal sender As Object, ByVal e As System.EventArgs)
        RemoveHandler Application.Idle, AddressOf Me.Form_Idle
        Me.TextBox1.Text = "サラマンダーより……はやーい"
    End Sub


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)