1

私は C# が初めてで、検索しましたが、問題の簡単な解決策が見つかりませんでした。Windows フォーム アプリケーションを作成しています。開始ボタンをクリックすると、ミリ秒ごとにカウントされ、配列から特定の値に達するとラベルが変更されます。ミリ秒はどのようにカウントできますか?

-------------------------

アレクザンダー コード:

            namespace timer_simple3
    {
        public partial class Form1 : Form
{
    long result = 0;
    public Form1()
    {
        InitializeComponent();
        this.timer1 = new System.Windows.Forms.Timer(this.components);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
    }

    private void timer1_Tick(object sender, EventArgs e)
    {

         result = result + 1;
        label1.Text = Convert.ToString(result);

    }

    private void btstart_Click(object sender, EventArgs e)
    {
        timer1.Interval = 1; //you can also set this in the
        //properties tab
        timer1.Enabled = true;
        timer1.Start();
       // label1.Text = Convert.ToString(timer1);
    }

    private void btstop_Click(object sender, EventArgs e)
    {
        timer1.Stop();
    }
}
    }
4

2 に答える 2

0

ミリ秒はどのようにカウントできますか?

Windows フォーム タイマー コンポーネントはシングル スレッドであり、精度が55ミリ秒に制限されているため、これを行うことはできません。精度の高いマルチスレッド タイマーが必要な場合は、System.Timers 名前空間の Timer クラスを使用します。

また、他のタイマーでは、16ミリ秒(実際には 15.625 ミリ秒、つまり 64Hz) を超える精度は得られません。したがって、経過したミリ秒をカウントするために一部のカウンターをインクリメントすることはできません。

あなたのためのオプション -long resultカウンターの代わりに、現在の時刻とタイマー開始時刻の差を使用します。

label1.Text = (DateTime.Now - startDateTime).Milliseconds.ToString();
于 2012-11-22T23:27:55.237 に答える
0

最初に、[ここに必要な数値を入力] ミリ秒ごとに何をすべきかをタイマーに伝えるメソッドを作成する必要があります。

private void randomTimer_Tick(object sender, EventArgs e)
{
    if (conditions)
    {
        ... //stuff to do
        ... //more stuff to do
        ... //even more stuff to do
    } 
}

次に、このメソッドを呼び出すようにタイマーを設定します。これは、タイマーのプロパティの [イベント] タブを使用するか、次のように記述して実行できます。

this.randomTimer1.Tick += new System.EventHandler(this.randomTimer1_Tick);

ProjectName.Designer.cs ファイルprivate void InitializeComponent(){}の行の後のメソッドにあるthis.randomTimer = new System.Windows.Forms.Timer(this.components);.

最後に、タイマーを有効にします。

private void startButton (object sender, EventArgs e)
{
    randomTimer.Interval = timeInMilliseconds; //you can also set this in the
                                               //properties tab
    randomTimer.Enabled = true;
}

もちろん、このメソッドを呼び出すボタンも設定する必要があります。

[プロパティ] ウィンドウの場所がわからない場合 (Visual C# を使用していると仮定します): 通常、ウィンドウの右側にあるタブです。タブに何かを表示するには、デザイン ビューで編集するフォームを選択する必要があります。コンパイラのウィンドウのどこにもそのようなタブがない場合は、[表示] -> [その他のウィンドウ] に移動し、[プロパティ ウィンドウ] を選択します。

見つけた答えが長くて複雑な場合、それはほとんどの場合、詳細と例を使用してプロセス全体を説明しているためです. Visual C# の「ドラッグ アンド ドロップ」オプションを使用すると、フォームの宣言コードが自動的に作成されます。その後、メソッドのコードを作成する必要があります。自明であり、プログラミングをより快適にする他の機能もあります。それらを使用してください!

于 2012-11-22T21:38:40.570 に答える