-1

ここや他の場所で多機能ボタンに関する投稿をいくつか見ましたが、それらの提案を実装するのに苦労しています.

.wav ファイルを生成して保存するシンセサイザーをコーディングしています。「ビン」に保存して「保存せずに」SoundPlayerで音を再生するボタンがあり、後で削除します。これはサウンドを再生する理想的な方法ではないことに気付きました!

クリックすると、ボタンのラベルが「再生」から「停止」に変わります。残念ながら、ボタンを「停止」として機能させることはできません。

「カウンター」を作ってみた

    public static int NumOfClicks = 0;

ボタンがクリックされるたびにNumOfClicks ++を実行し、次にif(IsEven(NumOfClicks))を実行しますが、「IsEvenはこのコンテキストには存在しません」というエラーが発生します。

    private void btnPlay_Click_1(object sender, EventArgs e)
    {
        NumOfClicks++;                                      
        btnPlay.Text = "Stop";
           filePath = @"TestTone.wav";
           WaveGenerator wave = new WaveGenerator();
           wave.Save(filePath);
           SoundPlayer player = new SoundPlayer(filePath);
           player.Play();

         if (IsEven(NumOfClicks))
          {
                   btnPlay.Text = "Play";
                   player.Stop();
                   filePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                   File.Delete(@"TestTone.wav");
          }


        }

別の「停止」ボタンを作成しようとしましたが、player.Stop() コマンドが機能しません (プレーヤーは「このコンテキストには存在しません」)。

NumOfClicks でスイッチを使用しようとしましたが、同じ「このコンテキストにプレーヤーが存在しません」というエラーが発生しました。

誰かがこれを修正するか、より良い方法を持っているなら、私はそれを大いに感謝します!

4

1 に答える 1

1

これを解決する 1 つの方法は、2 つのボタンを使用することです。最初の開発では、開始/停止機能が必要な方法で機能するまで、両方を異なる場所に表示します。

それが修正されたら、2 つのボタンをスタックし、可視性フラグを設定して、どちらを表示し、どちらを非表示にするかを設定できます。

// WPF Sample Code
void buttonPlay_onClick()
{
   // Do something
   buttonPlay.Visible = Visibility.Visible;
   buttonStop.Visible = Visibility.Hidden;
}

void buttonStop_onClick()
{
   // Do something
   buttonPlay.Visible = Visibility.Visible;
   buttonStop.Visible = Visibility.Hidden;
}

WPF の代わりに WinForms を使用している場合、可視性スイッチは代わりにこれらのコマンドを使用します。

   buttonPlay.Visible = true;
   buttonStop.Visible = false;

2 つのボタンを使用することで、各ボタンをクリックできる状態を制御できるため、クリック数などを追跡するのではなく、クリックを処理するコードを簡素化できます。ボタンが表示されている/アクティブな場合、ユーザーはボタンをクリックしてアクションを実行できます。

于 2015-05-19T04:27:34.377 に答える