Столкнулся с проблемой. Есть строка с множеством элементов и разделителями ";". Каждый элемент строки(txt) выводится в виде текста и помещается в создаваемую панель(pnl), которая в свою очередь помещается в более большую создаваемую панель(Block) (прошу прощения за наркоманию). Требуется чтобы в один Block размещалось только заданное кол-во pnl (в данный момент 2), после чего создается новый Block с последующим наполнением и т.д.
Т.е в итоге должны быть созданы (Block1, Block2, ....) в зависимости от количества элементов.
На данный момент присутствует следующий код, который к сожалению не работает. Изначально хотелось бы понять возможна ли такая реализация или же придется самостоятельно создавать большой объем панелей, которые будут удаляться при отсутствии в них информации?
Благодарю
Код: Выделить всё
public void SpecialConditionsInit()
{
string DText = "Три;Два;Раз;Value;Class;Superior";
String [] specialConditionLine = DText.Split(new Char [] {';'});
foreach (String item in specialConditionLine)
{
PanelControl(System.Convert.ToString(item));
}
}
Double count = 0;
Double Line = 0;
public void PanelControl(String CText)
{
if( String.IsNullOrEmpty(CText) )
return;
//
// Панель для текста
//
StiPanel pnl = new StiPanel();
pnl.CanGrow = true;
pnl.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(0, 0, 7, 0.4);
pnl.DockStyle = Stimulsoft.Report.Components.StiDockStyle.Left;
pnl.Name = "pnl";
pnl.Border = new Stimulsoft.Base.Drawing.StiBorder(Stimulsoft.Base.Drawing.StiBorderSides.All, System.Drawing.Color.Black, 1, Stimulsoft.Base.Drawing.StiPenStyle.Solid, false, 4, new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Black), false);
pnl.Brush = new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Transparent);
//
// Сам текст
//
StiText txt = new StiText();
txt.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(0.35, 0, 6, 0.4);
txt.Name = "txt";
txt.Type = Stimulsoft.Report.Components.StiSystemTextType.Expression;
txt.VertAlignment = Stimulsoft.Base.Drawing.StiVertAlignment.Center;
txt.Border = new Stimulsoft.Base.Drawing.StiBorder(Stimulsoft.Base.Drawing.StiBorderSides.All, System.Drawing.Color.Black, 1, Stimulsoft.Base.Drawing.StiPenStyle.Solid, false, 4, new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Black), false);
txt.Brush = new Stimulsoft.Base.Drawing.StiEmptyBrush();
txt.Font = new System.Drawing.Font("Microsoft Sans Serif", 5.75F);
txt.Indicator = null;
txt.Interaction = null;
txt.TextBrush = new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Black);
txt.TextOptions = new Stimulsoft.Base.Drawing.StiTextOptions(false, false, false, 0F, System.Drawing.Text.HotkeyPrefix.None, System.Drawing.StringTrimming.None);
txt.Parent = pnl;
//Установка текста
txt.TextValue = CText;
//
// Добавление Текста в Панель
//
pnl.Components.AddRange(new Stimulsoft.Report.Components.StiComponent[] {
txt});
count += 1;
if(Line == 0)
{
Line += 1;
StiPanel Block/*В название требуется включить текущее значение Line, для последующего обращения*/ = new StiPanel();
Block.CanGrow = true;
Block.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(0, 0, 17.6, 0.41);
Block.DockStyle = Stimulsoft.Report.Components.StiDockStyle.Top;
Block.Name = "pnl";
Block.Border = new Stimulsoft.Base.Drawing.StiBorder(Stimulsoft.Base.Drawing.StiBorderSides.All, System.Drawing.Color.Black, 1, Stimulsoft.Base.Drawing.StiPenStyle.Solid, false, 4, new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Black), false);
Block.Brush = new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Transparent);
this.Block/*-//-*/.Components.AddRange(new Stimulsoft.Report.Components.StiComponent[] {
pnl});
}
if(count <= 2)
{
this.Block/*-//-*/.Components.AddRange(new Stimulsoft.Report.Components.StiComponent[] {
pnl});
}
else
{
Line += 1;
StiPanel Block/*В название требуется включить текущее значение Line, для последующего обращения*/ = new StiPanel();
Block.CanGrow = true;
Block.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(0, 0, 17.6, 0.41);
Block.DockStyle = Stimulsoft.Report.Components.StiDockStyle.Top;
Block.Name = "pnl";
Block.Border = new Stimulsoft.Base.Drawing.StiBorder(Stimulsoft.Base.Drawing.StiBorderSides.All, System.Drawing.Color.Black, 1, Stimulsoft.Base.Drawing.StiPenStyle.Solid, false, 4, new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Black), false);
Block.Brush = new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Transparent);
this.Block/*-//-*/.Components.AddRange(new Stimulsoft.Report.Components.StiComponent[] {
pnl});
count = 0;
}
this.DataBand1.Components.AddRange(new Stimulsoft.Report.Components.StiComponent[] {
Block/*-//-*/});
}