0

再生したい *.wav ファイルのパスを含む文字列を返す関数を使用しています。

これは、ユーザーが何かをクリックしたときに再生するサウンドを決定するために使用される関数です...

Function GetSoundPath() As String
    Dim theme As String, appPath As String, soundPath As String
    theme = GetUserTheme()
    appPath = LCase(Application.StartupPath & "\themes\" & theme & "\sounds\click.wav")

    Return soundPath

End Function

上記の関数は、再生に必要な *.wav ファイルへの正しいパスを取得します。問題は、「My.Computer.Audio.Play(GetSoundPath)」で関数を使用すると、次のエラーが発生することです。

フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラーは次のとおりです。フォームは、デフォルトのインスタンスからの構築中にそれ自体を参照しました。これにより、無限の再帰が発生しました。フォームのコンストラクター内で、「Me」を使用してフォームを参照します。

application.vb ファイルを確認しましたが、「wisealarm」という名前のフォームへの参照が見つかりませんでした。フォームは、当然のことながら「Me」と呼ばれていました。さらに奇妙なことは、コマンドにパスを手動で入力すると、問題なく動作することです.. ex My.Computer.Audio.Play("c:\users\sound.wav")

どんな洞察も大歓迎です。さらにコードや詳細が必要な場合はお知らせください。ありがとう。

4

1 に答える 1

0

クラスの初期化など、フォームの初期化でエラーが発生するものがあります。この関数でエラーが発生している場合は、呼び出し (または "New" による初期化) を Dim (または同等の) ステートメントの外に移動して、より通常のデバッグを行うことができます。これは、form_load 関数に含まれている可能性があります。

また、未定義の変数 SoundPath を返しています。割り当てステートメントで appPath を SoundPath に置き換える必要があるかもしれません。

于 2013-01-31T17:39:35.740 に答える