プログレスバーをマーキースタイルで実行する
処理にかかる時間が不明な場合、プログレスバーをマーキー(Marquee)スタイルで実行するのが自然だ。その処理をどう書くか?
マーキースタイルのプログレスバーは表示を開始した時点から動き始める。止める方法が分からなかったので、処理を始めるときに表示して、処理が終わるときに表示をやめるようにした。コードは以下の通り。
import System.Drawing import System.Windows.Forms from System.Drawing import * from System.Windows.Forms import * class MainForm(Form): def __init__(self): self.InitializeComponent() def InitializeComponent(self): self._statusStrip1 = System.Windows.Forms.StatusStrip() self._toolStripProgressBar = System.Windows.Forms.ToolStripProgressBar() self._buttonStart = System.Windows.Forms.Button() self._buttonStop = System.Windows.Forms.Button() self._toolStripStatusLabel1 = System.Windows.Forms.ToolStripStatusLabel() self._statusStrip1.SuspendLayout() self.SuspendLayout() # # statusStrip1 # self._statusStrip1.Items.AddRange(System.Array[System.Windows.Forms.ToolStripItem]( [self._toolStripProgressBar, self._toolStripStatusLabel1])) self._statusStrip1.Location = System.Drawing.Point(0, 240) self._statusStrip1.Name = "statusStrip1" self._statusStrip1.Size = System.Drawing.Size(284, 22) self._statusStrip1.TabIndex = 0 self._statusStrip1.Text = "statusStrip1" # # toolStripProgressBar # self._toolStripProgressBar.MarqueeAnimationSpeed = 200 self._toolStripProgressBar.Name = "toolStripProgressBar" self._toolStripProgressBar.Size = System.Drawing.Size(100, 16) self._toolStripProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee self._toolStripProgressBar.Visible = False # # buttonStart # self._buttonStart.Location = System.Drawing.Point(56, 53) self._buttonStart.Name = "buttonStart" self._buttonStart.Size = System.Drawing.Size(175, 50) self._buttonStart.TabIndex = 1 self._buttonStart.Text = "start" self._buttonStart.UseVisualStyleBackColor = True self._buttonStart.Click += self.ButtonStartClick # # buttonStop # self._buttonStop.Location = System.Drawing.Point(56, 143) self._buttonStop.Name = "buttonStop" self._buttonStop.Size = System.Drawing.Size(175, 50) self._buttonStop.TabIndex = 2 self._buttonStop.Text = "stop" self._buttonStop.UseVisualStyleBackColor = True self._buttonStop.Click += self.ButtonStopClick # # toolStripStatusLabel1 # self._toolStripStatusLabel1.Name = "toolStripStatusLabel1" self._toolStripStatusLabel1.Size = System.Drawing.Size(0, 17) # # MainForm # self.ClientSize = System.Drawing.Size(284, 262) self.Controls.Add(self._buttonStop) self.Controls.Add(self._buttonStart) self.Controls.Add(self._statusStrip1) self.Name = "MainForm" self.Text = "Test window" self._statusStrip1.ResumeLayout(False) self._statusStrip1.PerformLayout() self.ResumeLayout(False) self.PerformLayout() # Startボタンを押したとき def ButtonStartClick(self, sender, e): self._toolStripProgressBar.Visible = True self._toolStripStatusLabel1.Text = "Now working ..." # Stopボタンを押したとき def ButtonStopClick(self, sender, e): self._toolStripProgressBar.Visible = False self._toolStripStatusLabel1.Text = ""
Startボタンを押すとプログレスバーが表示され、Stopボタンを押すと消える。
実行例は以下の通り。