C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: PlayStateChangeが呼び出されない


(過去ログ 74 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■43187 / inTopicNo.1)  PlayStateChangeが呼び出されない
  
□投稿者/ tex (1回)-(2009/10/31(Sat) 04:49:05)

分類:[C#] 

VS2008,C#,Windows7です。

axWindowsMediaPlayerを使い、音楽を再生しています。
音楽再生中はボタンのテキストを"一時停止"に、一時停止中はボタンのテキストを"再生"にするプログラムを作成しています。

private void playBotton_click(object sender, MouseEventArgs e)
{
if (this.axWmp.playState.ToString() != "wmppsPlaying")
{
this.axWmp.Ctlcontrols.play();
}
else if (this.axWmp.playState.ToString() != "wmppsPaused")
{
this.axWmp.Ctlcontrols.pause();
}
}

上記のようにして、ボタンをクリックしたときに、playStateを確認し、再生、停止を行うことはできています。
しかし、PlayStateChangeでPlayStateが変化したとき、"wmppsPlaying"ならばボタンのテキストを"一時停止"に、"wmppsPaused"ならば"再生"にする処理を書いたのですが、PlayStateChangeが呼び出されません。playState.ToString()で確認するとちゃんと変化しているので、呼び出されない理由がわからない状態です。

理由がわかる方、よろしくお願いします。
引用返信 編集キー/
■43188 / inTopicNo.2)  Re[1]: PlayStateChangeが呼び出されない
□投稿者/ Hongliang (500回)-(2009/10/31(Sat) 08:36:00)
イベントを用意したメソッドに関連づけていない、というのは良くある話ですが。
デザイナのプロパティグリッドの雷アイコンから追加しましたか?
引用返信 編集キー/
■43189 / inTopicNo.3)  Re[2]: PlayStateChangeが呼び出されない
□投稿者/ tex (2回)-(2009/10/31(Sat) 09:43:54)
No43188 (Hongliang さん) に返信
> イベントを用意したメソッドに関連づけていない、というのは良くある話ですが。
> デザイナのプロパティグリッドの雷アイコンから追加しましたか?

返信ありがとうございます。
デザイナプロパティの雷アイコンから作成しましたが、呼び出されませんでした。

引用返信 編集キー/
■43190 / inTopicNo.4)  Re[3]: PlayStateChangeが呼び出されない
□投稿者/ オショウ (367回)-(2009/10/31(Sat) 10:49:17)
2009/10/31(Sat) 10:49:38 編集(投稿者)
No43189 (tex さん) に返信
> ■No43188 (Hongliang さん) に返信
>>イベントを用意したメソッドに関連づけていない、というのは良くある話ですが。
>>デザイナのプロパティグリッドの雷アイコンから追加しましたか?
> 
> 返信ありがとうございます。
> デザイナプロパティの雷アイコンから作成しましたが、呼び出されませんでした。

  雷アイコン? C#でしょう・・・

    axWindowsMediaPlayer1.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(axWindowsMediaPlayer1_PlayStateChange);

  と、イベントハンドラ追加されました?

  axWmp.playState.ToString() とわざわざ文字列にしなくても

        private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            switch(axWindowsMediaPlayer1.playState ){
                case WMPLib.WMPPlayState.wmppsPlaying :
                    Console.WriteLine("Playing");  
                    break;
                case WMPLib.WMPPlayState .wmppsStopped :
                    Console.WriteLine("Stopped");
                    break;
            }
        }

  で、正常に動作しましたが。

以上。参考まで

引用返信 編集キー/
■43191 / inTopicNo.5)  Re[4]: PlayStateChangeが呼び出されない
□投稿者/ オショウ (368回)-(2009/10/31(Sat) 10:51:32)
追伸

        private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            switch((WMPLib.WMPPlayState)e.newState){
                case WMPLib.WMPPlayState.wmppsPlaying :
                    Console.WriteLine("Playing");  
                    break;
                case WMPLib.WMPPlayState .wmppsStopped :
                    Console.WriteLine("Stopped");
                    break;
            }
        }

  こっちの方が正しいかな・・・

以上。

引用返信 編集キー/
■43195 / inTopicNo.6)  Re[4]: PlayStateChangeが呼び出されない
□投稿者/ Azulean (473回)-(2009/10/31(Sat) 14:07:31)
2009/10/31(Sat) 14:10:55 編集(投稿者)

No43190 (オショウ さん) に返信
>   雷アイコン? C#でしょう・・・
どういった意図から発言されたのでしょうか?

C# であろうと、VB.NET であろうと、デザイナを開いてプロパティを見ると、雷アイコンでイベントが設定できる表示に切り替わりますし、そこから設定していれば、明示的に書く必要はありません。
(Designer.csに自動で記載される)

(参考)手前味噌ですが、イベントの設定イメージは以下のようなものです。
http://azulean.spaces.live.com/blog/cns!9E1932AF4BE9E15D!172.entry
(リンクが途中で切れていますので、アドレス欄にコピペでお願いします)

# 否定のニュアンスに感じられたために補足しました。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -