0

アプリケーションを X 秒待機させてから、スクリプトの行を続行するメソッドを作成したいと考えています。たとえば、これは、多くの同様のヘルプ トピックを読んだ後、これまでに作成したコードです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
        {
        public Form1()
        {
            InitializeComponent();

            methods.WriteTextToScreen(label1, "Hello!");
            methods.sleepFor(1);
            methods.WriteTextToScreen(label1, "Welcome!");
            methods.sleepFor(1);
            methods.WriteTextToScreen(label1, "Allo!");
        }

        public class methods
        {
            public static int timeSlept;

            public static void WriteTextToScreen(Label LabelName, string text)
            {

                LabelName.Text = text;
            }


            public static void sleepFor(int seconds)
            {
                timeSlept = 0;

                System.Timers.Timer newTimer = new System.Timers.Timer();
                newTimer.Interval = 1000;
                newTimer.AutoReset = true;

                newTimer.Elapsed += new     System.Timers.ElapsedEventHandler(newTimer_Elapsed);

            newTimer.Start();

            while (timeSlept < seconds)
            {
                Application.DoEvents();
            }

            Application.DoEvents();

        }

        public static void newTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            timeSlept = IncreaseTimerValues(ref timeSlept);
            Application.DoEvents();
        }

        public static int IncreaseTimerValues(ref int x)
        {
            int returnThis = x + 1;
            return returnThis;
        }

    }

}
}

私がやりたいことは、プログラムに Methods.WriteTextToScreen(label1, "Hello!") を実行させてから、1 秒間待ってから、同じ方法で続行することです。問題は、テキストを表示しているフォームが、「Allo!」と書かれるまでまったく表示されないことです。画面に表示されるので、最初に表示されたときにすでにそう言っています。私は何か間違ったことをしていますか、それともこれを行う方法はありませんか?

4

1 に答える 1

0

フォームが構築されるまで、つまり Form1 のすべてのコードが実行されるまで、フォームは表示されません。フォーム コンストラクターの詳細については、http: //msdn.microsoft.com/en-us/library/system.windows.forms.form.form.aspxを参照してください。

問題を解決するには、writeTextToScreen とスリープ コードをフォーム オン ロード メソッドに移動します。http://msdn.microsoft.com/en-us/library/system.windows.forms.form.onload.aspxを参照してください。

于 2013-06-01T17:53:02.210 に答える