2017-06-29 20 views
1

我想用一個計時器來實現過去用於顯示進程正在運行的舊動畫。停止並通過在C#Windows中使用計時器重複過程表單

我想這樣做的方式是通過添加點到一個句子(在標籤中控制),例如:

「進程正在運行」。到「進程正在運行..」和「進程正在運行...」,限制爲3個點,然後恢復爲單個點。

我不確定在這裏使用計時器會是最好的選擇,但我認爲它應該對這樣一個簡單的例子正常工作。

我使用的代碼如下:

public string InitialProcessText; 

private void StartBtn_Click(object sender, EventArgs e) 
{ 
    if(fileName != "No file selected") 
    { 
     ValidationLbl.Text = null; 
     ProcessLbl.Text = "Application is now running."; 
     //InitialProcessText = ProcessLbl.Text; 
     ProcessTimer.Start(); 
    } 
    else 
    { 
     ValidationLbl.Text = "No file was added"; 
    } 
} 

private void StopBtn_Click(object sender, EventArgs e) 
{ 
    ProcessTimer.Stop(); 
} 

private void ProcessTimer_Tick(object sender, EventArgs e) 
{ 
    _ticks++; 

    //For every two ticks, ProcessLbl.Text = InitialProcessText 
    ProcessLbl.Text += "."; 
} 

什麼我可以添加設置加2個點的限制,然後刪除該點並重新添加點(我會承擔這樣做的ProcessTimer_Tick方法)?

+0

哪裏定義您的ProcessTimer? – user1408786

回答

2

你可以用你的_ticks變量:

private readonly int _ticksPerUpdate = 2; 
private readonly int _maxNumberOfDots = 3; 

private void ProcessTimer_Tick(object sender, EventArgs e) 
{ 
    _ticks++; 

    if(_ticks == (_ticksPerUpdate * (_maxNumberOfDots + 1))) 
    { 
     _ticks = 0; 
     ProcessLbl.Text = InitialProcessText; 
    }   
    else if(_ticks % _ticksPerUpdate == 0) 
    { 
     ProcessLbl.Text += "."; 
    } 
} 

記住將蜱反擊每次啓動計時器:

private void StartBtn_Click(object sender, EventArgs e) 
{ 
    if(fileName != "No file selected") 
    { 
     ValidationLbl.Text = null; 
     ProcessLbl.Text = "Application is now running."; 
     InitialProcessText = ProcessLbl.Text; 

     // reset the variable 
     _ticks = 0 
     ProcessTimer.Start(); 
    } 
    else 
    { 
     ValidationLbl.Text = "No file was added"; 
    } 
} 
+0

這就是我正在尋找的,只是使用ticks變量來設置一個限制。 – Barrosy

2

我認爲_ticks計數蜱的數量。然後你可以去:

if(ticks%3 == 0) 
{ 
    ProcessLbl.Text = "Application is now running." 
} 
else 
{ 
    ProcessLbl.Text+="."; 
} 

然後,在第一次蜱,1%3 = 1那麼它增加了一個點,在第二個刻度,2%,3 = 2那麼它增加了一個點和第三個刻度,3%3 = 0,所以它回到原來的狀態。

+0

我喜歡這個,它很簡單明瞭 –

1

只是因爲......這裏的另一種方法:

private void ProcessTimer_Tick(object sender, EventArgs e) 
{ 
    ProcessLbl.Text = ProcessLbl.Text.EndsWith("...") ? ProcessLbl.Text.TrimEnd(".".ToCharArray()) + "." : ProcessLbl.Text + "."; 
} 
相關問題