tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルタスクバーに納めた場合のイベント
記事No8912
投稿日: 2009/05/06(Wed) 05:01
投稿者山広
VB2005: XP SP3

現在作成しているコードは、ある時間を設定し、その時間になるとイベントを発生させるというものなのですが、時間がくるまでタスクトレイに格納しておこうと思い、そのようにしたのですが、そうするとイベントが発生しなくなってしまいました。
フォームを開いて表示している状態だと、問題なくコードは動いています。


タスクトレイに格納すると、timerイベントなどは効かなくなるのでしょうか?
みなさんはバックグラウンド処理にしているのでしょうか?

どなたか助言をよろしくお願いいたします。



タスクトレイに格納(サンプルコード)
Me.Visible = False

Dim ico As New System.Drawing.Icon("Sample1.ico")
NotifyIcon1.Icon = ico
NotifyIcon1.Visible = True

[ツリー表示へ]
タイトルRe: タスクバーに納めた場合のイベント
記事No8913
投稿日: 2009/05/06(Wed) 08:45
投稿者花ちゃん
> タスクトレイに格納すると、timerイベントなどは効かなくなるのでしょうか?
> タスクトレイに格納(サンプルコード)
> Me.Visible = False
>
> Dim ico As New System.Drawing.Icon("Sample1.ico")
> NotifyIcon1.Icon = ico
> NotifyIcon1.Visible = True

事象を再現できるコードを作成して投稿して見て下さい。
下記では、Timer イベントは、発生しておりますが。
Private Sub Button1_Click(ByVal sender As System.Object, _
                  ByVal e As System.EventArgs) Handles Button1.Click
   Me.Visible = False
   Dim ico As New System.Drawing.Icon("Sample1.ico")
   NotifyIcon1.Icon = ico
   NotifyIcon1.Visible = True

   Timer1.Enabled = True
   Timer1.Interval = 5000  '5秒後にFormを表示
   Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Timer1.Tick
   Me.Visible = True
End Sub

[ツリー表示へ]
タイトルRe^2: タスクバーに納めた場合のイベント
記事No8914
投稿日: 2009/05/06(Wed) 15:43
投稿者山広
失礼しました。


こんな感じで、Button5を押すと、タスクトレイに格納して、IF条文で現在時間がTextBox1で設定した時間になると、プログラムが起動するというプログラムです。

タスクトレイに格納しなければ問題なく動くので、根本的な問題なのでしょうか?




Private Sub listForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

      
        Me.Timer1.Interval = 1000
    Me.Timer2.Interval = 1000

    Me.Timer1.Enabled = True

End Sub


Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

   Me.Button4.PerformClick()

End Sub


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Me.Label17.Text = (Now.ToString("yyyy年MM月dd日 HH時mm分"))

End Sub



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

        Me.Timer2.Enabled = True

    If TextBox1.Text = Label17.Text Then

           MsgBox("動いています")

        End If

End Sub


Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click


        Me.Button4.PerformClick()

        Me.Visible = False

        Dim ico As New System.Drawing.Icon("Sample1.ico")
        NotifyIcon1.Icon = ico

        NotifyIcon1.Visible = True

End Sub

[ツリー表示へ]
タイトルRe^3: タスクバーに納めた場合のイベント
記事No8915
投稿日: 2009/05/06(Wed) 19:04
投稿者花ちゃん
> Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
>
>    Me.Button4.PerformClick()
>
> End Sub

Timer イベントが発生していないのではなく、非表示の Me.Button4.PerformClick() が
クリックできないだけでは。
(ブレークポイントを設定して動作を確認すれば解るかと)

Private Sub Timer2_Tick(ByVal sender As System.Object, _
                        ByVal e As System.EventArgs) Handles Timer2.Tick
   If TextBox1.Text = Label17.Text Then
           MsgBox("動いています")
   End If
End Sub

のように書き換えれば動くかと。

[ツリー表示へ]
タイトルRe^4: タスクバーに納めた場合のイベント
記事No8916
投稿日: 2009/05/06(Wed) 20:05
投稿者山広
花ちゃんさん有り難うございます。

アドバイス通りにしましたら解決しました。
問題なく実行してくれました。

ただ、頭が混乱してしまっているので、ひとつひとつ紐解いていきたいと思います。

有り難うございます。

[ツリー表示へ]