///<summary>Creates a new progress bar and adds it to the form.</summary> private ODProgressBar AddNewProgressBar(string leftLabel, string topLabel, string rightLabel, int blockValue, int blockMax, string tagString, ProgBarStyle progStyle, int marqSpeed, bool isLeftHidden, bool isTopHidden, bool isRightHidden) { if (_listProgressBars.Count > 10) { MsgBox.Show(this, "Cannot have more than 10 progress bars on window."); return(null); } ODProgressBar pbar = new ODProgressBar(leftLabel, topLabel, rightLabel, blockValue, blockMax, tagString, progStyle, marqSpeed, isLeftHidden, isTopHidden, isRightHidden); int rowLocation = tableLayoutPanel1.RowCount; tableLayoutPanel1.Controls.Add(pbar, 1, rowLocation); pbar.Name = "pbar" + rowLocation; return(pbar); }
public void ODEvent_Fired(ODEventArgs e) { //We don't know what thread will cause a progress status change, so invoke this method as a delegate if necessary. if (this.InvokeRequired) { this.Invoke((Action) delegate() { ODEvent_Fired(e); }); return; } //Make sure that this ODEvent is for FormProgressExtended and that the Tag is not null and is a string. if (e.Name != _odEventName || e.Tag == null) { return; } ProgressBarHelper progHelper = new ProgressBarHelper(""); bool hasProgHelper = false; string status = ""; if (e.Tag.GetType() == typeof(string)) { status = ((string)e.Tag); } else if (e.Tag.GetType() == typeof(ProgressBarHelper)) { progHelper = (ProgressBarHelper)e.Tag; status = progHelper.LabelValue; hasProgHelper = true; } else //Unsupported type passed in. { return; } //When the developer wants to close the window, they will send an ODEvent with "DEFCON 1" to signal this form to shut everything down. if (status.ToUpper() == "DEFCON 1") { DialogResult = DialogResult.OK; Close(); return; } if (hasProgHelper) { switch (progHelper.ProgressBarEventType) { case ProgBarEventType.BringToFront: this.TopMost = true; this.TopMost = false; break; case ProgBarEventType.Header: this.Text = status; break; case ProgBarEventType.ProgressLog: label4.Text = status; break; case ProgBarEventType.TextMsg: status = status.Trim(); //Get rid of leading and trailing new lines. textMsg.AppendText((string.IsNullOrWhiteSpace(textMsg.Text) ? "" : "\r\n") + status.PadRight(60)); break; case ProgBarEventType.WarningOff: case ProgBarEventType.AllowResume: labelWarning.Visible = false; butPause.Enabled = true; butPause.Text = Lan.g(this, "Resume"); break; case ProgBarEventType.Done: butCancel.Visible = true; //can sometimes be set to invisible with HideButtons. Show if previously invisible. butCancel.Text = Lan.g(this, "Close"); butPause.Enabled = false; _isDone = true; break; case ProgBarEventType.HideButtons: //hide pause and cancel. Call Done when "close button" should appear. butPause.Visible = false; butCancel.Visible = false; break; case ProgBarEventType.ProgressBar: default: if (!_listProgressBars.Exists(x => x.TagString.ToLower() == progHelper.TagString.ToLower())) //if not already added { ODProgressBar progBar = AddNewProgressBar(progHelper.LabelValue, progHelper.LabelTop, progHelper.PercentValue, progHelper.BlockValue, progHelper.BlockMax, progHelper.TagString, progHelper.ProgressStyle, progHelper.MarqueeSpeed, progHelper.IsValHidden, progHelper.IsTopHidden, progHelper.IsPercentHidden); if (progBar == null) { break; } _listProgressBars.Add(progBar); } else { ODProgressBar odBar = _listProgressBars.Find(x => x.TagString.ToLower() == progHelper.TagString.ToLower()); UpdateProgressBar(odBar, progHelper); } break; } } Application.DoEvents(); //So that the label updates with the new status. }
private void UpdateProgressBar(ODProgressBar progBar, ProgressBarHelper progHelper) { progBar.ODProgUpdate(progHelper.LabelValue, progHelper.LabelTop, progHelper.PercentValue, progHelper.BlockValue, progHelper.BlockMax, progHelper.TagString, progHelper.ProgressStyle, progHelper.MarqueeSpeed, progHelper.IsValHidden, progHelper.IsTopHidden, progHelper.IsPercentHidden); }