0

私の問題は、フォームが表示される前にプログラムが話すことです。

ロードブロックは次のとおりです。

/********************
*                  *
*    Start Game    *
*                  *
********************/
private void Battleship_Load(object sender, EventArgs e)
{
    // Interface housekeeping
    lblStatus.Font = new Font("HandelGotDLig", 18);

    // fill computer board
    game.buildBoards();
    human = game.Human;
    computer = game.Computer;
    shot = game.Initialize(ref human, ref shot);

    //set up displays
    gbComputerHistory.Visible = false;
    gbHumanHistory.Visible = false;
    gbShot.Visible = false;
    lblStatus.Text = "Choose who starts";
    gbStart.Visible = true;

    // display human board
    DisplayBoard(picHuman, human, false);

    // display computer ships
    DisplayBoard(picComputer, computer, false);
    this.Refresh();

    #if SPEECH
        Say("Welcome to BATTLESHIP! Prepare to Lose!");
        Say("Choose who starts first.");
    #endif
}

私はそれを paint イベントに埋めることができると思いますが、それがすでに話されているかどうかを追跡する必要があります.

フォームが再描画されるたびに話したくありません。

4

1 に答える 1

1

Form_Shownイベントに音声コードを追加してみてください。このイベントは、フォームがユーザーに表示されるたびに発生します (ユーザーが実際にフォームを表示できる場合)。MSDNから:

Shown イベントは、フォームが最初に表示されたときにのみ発生します。その後、最小化、最大化、復元、非表示、表示、または無効化して再描画しても、このイベントは発生しません。

于 2012-09-30T22:40:21.310 に答える