/// <summary>Returns the required height.</summary> private int ArrangeControls(Graphics g) { //580 is the initial width of the panel int inputW = 280; //The input section on the right. int promptW = 580 - 20 - inputW; //20 is for the scrollbar on the right panelMain.Controls.Clear(); int yPos = 5; int itemH = 0; //item height labels = new Label[Parameters.Count]; inputs = new Control[Parameters.Count]; for (int i = 0; i < Parameters.Count; i++) { //Calculate height itemH = (int)g.MeasureString(Parameters[i].Prompt, Font, promptW).Height; if (itemH < 20) { itemH = 20; } //promptingText labels[i] = new Label(); labels[i].Location = new Point(5, yPos); //labels[i].Name="Label"+i.ToString(); labels[i].Size = new Size(promptW - 8, itemH); labels[i].Text = Parameters[i].Prompt; labels[i].TextAlign = ContentAlignment.MiddleRight; //labels[i].BorderStyle=BorderStyle.FixedSingle;//just used in debugging layout panelMain.Controls.Add(labels[i]); if (Parameters[i].ValueType == ParamValueType.Boolean) { //add a checkbox inputs[i] = new CheckBox(); inputs[i].Location = new Point(promptW, yPos + (itemH - 20) / 2); inputs[i].Size = new Size(inputW - 5, 20); if (Parameters[i].CurrentValues.Count == 0) { ((CheckBox)inputs[i]).Checked = false; } else { ((CheckBox)inputs[i]).Checked = true; } ((CheckBox)inputs[i]).FlatStyle = FlatStyle.System; panelMain.Controls.Add(inputs[i]); } else if (Parameters[i].ValueType == ParamValueType.Date) { //add a validDate box inputs[i] = new ValidDate(); inputs[i].Location = new Point(promptW, yPos + (itemH - 20) / 2); if (inputW < 100) //not enough room for a fullsize box { inputs[i].Size = new Size(inputW - 20, 20); } else { inputs[i].Size = new Size(75, 20); } ; if (Parameters[i].CurrentValues.Count > 0) { DateTime myDate = (DateTime)Parameters[i].CurrentValues[0]; inputs[i].Text = myDate.ToShortDateString(); } panelMain.Controls.Add(inputs[i]); } else if (Parameters[i].ValueType == ParamValueType.Enum) { //add a psuedo combobox filled with values for one enumeration inputs[i] = new ComboBoxMulti(); Type eType = Type.GetType("ODR." + Parameters[i].EnumerationType.ToString()); for (int j = 0; j < Enum.GetNames(eType).Length; j++) { ((ComboBoxMulti)inputs[i]).Items.Add(Enum.GetNames(eType)[j]); if (Parameters[i].CurrentValues.Count > 0 && Parameters[i].CurrentValues .Contains((int)(Enum.Parse(eType, Enum.GetNames(eType)[j])))) { ((ComboBoxMulti)inputs[i]).SetSelected(j, true); } } inputs[i].Location = new Point(promptW, yPos + (itemH - 20) / 2); inputs[i].Size = new Size(inputW - 5, 20); panelMain.Controls.Add(inputs[i]); } else if (Parameters[i].ValueType == ParamValueType.Integer) { //add a validNumber box inputs[i] = new ValidNumber(); inputs[i].Location = new Point(promptW, yPos + (itemH - 20) / 2); if (inputW < 100) //not enough room for a fullsize box { inputs[i].Size = new Size(inputW - 20, 20); } else { inputs[i].Size = new Size(75, 20); } if (Parameters[i].CurrentValues.Count > 0) { inputs[i].Text = ((int)Parameters[i].CurrentValues[0]).ToString(); } panelMain.Controls.Add(inputs[i]); } else if (Parameters[i].ValueType == ParamValueType.Number) { //add a validDouble box inputs[i] = new ValidDouble(); inputs[i].Location = new Point(promptW, yPos + (itemH - 20) / 2); if (inputW < 100) //not enough room for a fullsize box { inputs[i].Size = new Size(inputW - 20, 20); } else { inputs[i].Size = new Size(75, 20); } if (Parameters[i].CurrentValues.Count > 0) { inputs[i].Text = ((double)Parameters[i].CurrentValues[0]).ToString("n"); } panelMain.Controls.Add(inputs[i]); } else if (Parameters[i].ValueType == ParamValueType.String) { //add a textbox inputs[i] = new TextBox(); inputs[i].Location = new Point(promptW, yPos + (itemH - 20) / 2); //inputs[i].Name= inputs[i].Size = new Size(inputW - 5, 20); if (Parameters[i].CurrentValues.Count > 0) { inputs[i].Text = Parameters[i].CurrentValues[0].ToString(); } panelMain.Controls.Add(inputs[i]); } yPos += itemH + 5; //if(yPos>panelMain.Height && !vScrollBar2.Visible) // return yPos;//There's not enough room, so stop and make the scrollbar visible. } //panelSlide.Height=yPos; //vScrollBar2.Maximum=panelSlide.Height; //vScrollBar2.Minimum=0; //vScrollBar2.LargeChange=panelMain.Height; //vScrollBar2.SmallChange=5; return(yPos); }
/// <summary>Returns the required height.</summary> private int ArrangeControls(Graphics g){ //580 is the initial width of the panel int inputW=280;//The input section on the right. int promptW=580-20-inputW;//20 is for the scrollbar on the right panelMain.Controls.Clear(); int yPos=5; int itemH=0;//item height labels=new Label[Parameters.Count]; inputs=new Control[Parameters.Count]; for(int i=0;i<Parameters.Count;i++){ //Calculate height itemH=(int)g.MeasureString(Parameters[i].Prompt,Font,promptW).Height; if(itemH<20) itemH=20; //promptingText labels[i]=new Label(); labels[i].Location=new Point(5,yPos); //labels[i].Name="Label"+i.ToString(); labels[i].Size=new Size(promptW-8,itemH); labels[i].Text=Parameters[i].Prompt; labels[i].TextAlign=ContentAlignment.MiddleRight; //labels[i].BorderStyle=BorderStyle.FixedSingle;//just used in debugging layout panelMain.Controls.Add(labels[i]); if(Parameters[i].ValueType==ParamValueType.Boolean){ //add a checkbox inputs[i]=new CheckBox(); inputs[i].Location=new Point(promptW,yPos+(itemH-20)/2); inputs[i].Size=new Size(inputW-5,20); if(Parameters[i].CurrentValues.Count==0) ((CheckBox)inputs[i]).Checked=false; else ((CheckBox)inputs[i]).Checked=true; ((CheckBox)inputs[i]).FlatStyle=FlatStyle.System; panelMain.Controls.Add(inputs[i]); } else if(Parameters[i].ValueType==ParamValueType.Date){ //add a validDate box inputs[i]=new ValidDate(); inputs[i].Location=new Point(promptW,yPos+(itemH-20)/2); if(inputW<100){//not enough room for a fullsize box inputs[i].Size=new Size(inputW-20,20); } else{ inputs[i].Size=new Size(75,20); } ; if(Parameters[i].CurrentValues.Count>0){ DateTime myDate=(DateTime)Parameters[i].CurrentValues[0]; inputs[i].Text=myDate.ToShortDateString(); } panelMain.Controls.Add(inputs[i]); } else if(Parameters[i].ValueType==ParamValueType.Enum){ //add a psuedo combobox filled with values for one enumeration inputs[i]=new ComboBoxMulti(); Type eType=Type.GetType("ODR."+Parameters[i].EnumerationType.ToString()); for(int j=0;j<Enum.GetNames(eType).Length;j++){ ((ComboBoxMulti)inputs[i]).Items.Add(Enum.GetNames(eType)[j]); if(Parameters[i].CurrentValues.Count > 0 && Parameters[i].CurrentValues .Contains((int)(Enum.Parse(eType,Enum.GetNames(eType)[j]))) ) { ((ComboBoxMulti)inputs[i]).SetSelected(j,true); } } inputs[i].Location=new Point(promptW,yPos+(itemH-20)/2); inputs[i].Size=new Size(inputW-5,20); panelMain.Controls.Add(inputs[i]); } else if(Parameters[i].ValueType==ParamValueType.Integer){ //add a validNumber box inputs[i]=new ValidNumber(); inputs[i].Location=new Point(promptW,yPos+(itemH-20)/2); if(inputW<100){//not enough room for a fullsize box inputs[i].Size=new Size(inputW-20,20); } else{ inputs[i].Size=new Size(75,20); } if(Parameters[i].CurrentValues.Count>0){ inputs[i].Text=((int)Parameters[i].CurrentValues[0]).ToString(); } panelMain.Controls.Add(inputs[i]); } else if(Parameters[i].ValueType==ParamValueType.Number){ //add a validDouble box inputs[i]=new ValidDouble(); inputs[i].Location=new Point(promptW,yPos+(itemH-20)/2); if(inputW<100){//not enough room for a fullsize box inputs[i].Size=new Size(inputW-20,20); } else{ inputs[i].Size=new Size(75,20); } if(Parameters[i].CurrentValues.Count>0){ inputs[i].Text=((double)Parameters[i].CurrentValues[0]).ToString("n"); } panelMain.Controls.Add(inputs[i]); } else if(Parameters[i].ValueType==ParamValueType.String){ //add a textbox inputs[i]=new TextBox(); inputs[i].Location=new Point(promptW,yPos+(itemH-20)/2); //inputs[i].Name= inputs[i].Size=new Size(inputW-5,20); if(Parameters[i].CurrentValues.Count>0){ inputs[i].Text=Parameters[i].CurrentValues[0].ToString(); } panelMain.Controls.Add(inputs[i]); } yPos+=itemH+5; //if(yPos>panelMain.Height && !vScrollBar2.Visible) // return yPos;//There's not enough room, so stop and make the scrollbar visible. } //panelSlide.Height=yPos; //vScrollBar2.Maximum=panelSlide.Height; //vScrollBar2.Minimum=0; //vScrollBar2.LargeChange=panelMain.Height; //vScrollBar2.SmallChange=5; return yPos; }