C# WinForm 弹出模式窗口操作滚动条
弹出的模式窗体
public partial class frmProcessBar : Form { public frmProcessBar() { InitializeComponent(); } public bool Increase(int runTime) { if (runTime > 0) { int tempTime = Convert.ToInt32(prcBar.Value); if (tempTime % 10 == 0) { this.labTimer.Text = (Convert.ToInt32(this.labTimer.Text) + runTime).ToString(); } if (prcBar.Value + runTime < prcBar.Maximum) { prcBar.Value += runTime; return true; }else{ prcBar.Value = prcBar.Maximum; this.Close(); return false; } } return false; } }
测试用例
public delegate string AsyncMethodCaller(); public delegate void AsyncShowMethod(); private frmProcessBar myProcessBar = null; private delegate bool IncreaseHandle(int runTime); private IncreaseHandle myIncrease = null; private void ShowProcessBar() { myProcessBar = new frmProcessBar(); myIncrease = new IncreaseHandle(myProcessBar.Increase); myProcessBar.StartPosition = FormStartPosition.CenterParent; myProcessBar.ShowDialog(); myProcessBar = null; } string result = string.Empty;//接收返回的结果 AsyncMethodCaller callerRun = new AsyncMethodCaller(disPlay.Show); //耗时执行的方法 IAsyncResult synresult = callerRun.BeginInvoke(null, null); this.BeginInvoke(new AsyncShowMethod(ShowProcessBar)); //启动弹出窗体 while (synresult.IsCompleted == false) { this.BeginInvoke(this.myIncrease, new object[] { 1, 1 }); Thread.Sleep(100); } this.BeginInvoke(this.myIncrease, new object[] { 100, 1 }); result = callerRun.EndInvoke(synresult); // 返回执行的结果