ActiveReport中如何动态地添加控件? 要求由客户动态的调整需要打印的数据列.这就要求activereport的控件最好能够动态的增减.谁有这方面的经验? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我只有动态增加label的,for (int i = 0;i < nTotals;i++){//Get the Panel Sizeint width = pictureBox1.Size.Width;int height = pictureBox1.Size.Height;Label lb=new Label();lb.Location=new Point(i*20,i*30);lb.Size= new Size(158,30);lb.BorderStyle = BorderStyle.FixedSingle;//lb.AutoSize = true;lb.Name = "lbName"+i;lb.Text = ChannelName;this.panel1.Controls.Add(lb);lb.BackColor = System.Drawing.Color.Transparent;lb.DoubleClick += new System.EventHandler(this.label_DoubleClick);lb.MouseHover += new System.EventHandler(this.label_MouseHover);lb.MouseLeave += new System.EventHandler(this.label_MouseLeave);lb.MouseDown +=new MouseEventHandler(this.label_MouseDown);lb.Tag = ***;lb.BringToFront();lb.BackColor = System.Drawing.Color.LemonChiffon;this.panel1.Invalidate();} 谢谢 akeen(出没熊) 楼上的楼上能在Winform里用,在Ar里用还是不行动态创建控件很麻烦,主要是排版的问题,这是我以前写的打印工资条的代码,工资项目是不固定的,故我只能用动态的加列, private void constructReport() { this.Detail.CanGrow=true; this.Detail.CanShrink=true; this.Detail.KeepTogether=true; for(int i=0;i<dt.Columns.Count;i++) { if(i>8 && i%9==0) { this.m_currentY=this.m_currentY+this.m_defaultHeight*2; this.m_currentX=0; count++; } TextBox txt=new TextBox(); txt.Location=new PointF(this.m_currentX,this.m_currentY); this.m_currentX=this.m_currentX+this.m_defaultWidth; txt.Width=this.m_defaultWidth; txt.Height=this.m_defaultHeight; txt.Border.BottomStyle=BorderLineStyle.Solid; txt.Border.TopStyle=BorderLineStyle.Solid; txt.Border.LeftStyle=BorderLineStyle.Solid; txt.Border.RightStyle=BorderLineStyle.Solid; txt.Text=dt.Columns[i].ColumnName.Trim(); txt.Alignment=TextAlignment.Center; txt.VerticalAlignment=VerticalTextAlignment.Middle; this.Detail.Controls.Add(txt); } this.m_currentX=0f; this.m_currentY=0.2f; for(int i=0;i<dt.Columns.Count;i++) { if(i>8 && i%9==0) { this.m_currentY=this.m_currentY+this.m_defaultHeight*2; this.m_currentX=0; count++; } TextBox txt=new TextBox(); txt.Location=new PointF(this.m_currentX,this.m_currentY); this.m_currentX=this.m_currentX+this.m_defaultWidth; txt.Width=this.m_defaultWidth; txt.Height=this.m_defaultHeight; txt.Border.BottomStyle=BorderLineStyle.Solid; txt.Border.TopStyle=BorderLineStyle.Solid; txt.Border.LeftStyle=BorderLineStyle.Solid; txt.Border.RightStyle=BorderLineStyle.Solid; txt.Alignment=TextAlignment.Center; txt.VerticalAlignment=VerticalTextAlignment.Middle; txt.DataField=dt.Columns[i].ColumnName; if(dt.Columns[i].DataType.ToString()=="System.Decimal") txt.OutputFormat="#,##0.00"; this.Detail.Controls.Add(txt); } TextBox txt1=new TextBox(); txt1.Location=new PointF(0f,this.m_currentY+0.2f); this.m_currentX=this.m_currentX+this.m_defaultWidth; txt1.Width=this.m_defaultWidth; txt1.Height=this.m_defaultHeight; this.Detail.Controls.Add(txt1); this.Detail.Height=this.m_defaultHeight*count+1f; } 非常感谢whmjw(明年今日十年之后),我试试!其他高人还有好的方法吗? C# 这样合理吗 怎么弹出提示信息 遍历panel按钮依次显示 请教,这种效果怎样实现 [整理贴]托管代码/非托管代码及托管资源/非托管资源的扫盲帖 winform打开一个新窗口本身窗口关闭的代码怎样写啊? 【c#求助】如何用命令行启动程序并要求执行操作~~?? #############我怎样将一个DLL文件与主程序并到一起,执行的时候再释放出来?? 调试时命令窗口的问题 导出树到Excel以树型显示,C#的写法 C#进度条控件 请教.net程序中往映射盘上写文件的问题 请教一个技术问题
for (int i = 0;i < nTotals;i++)
{//Get the Panel Size
int width = pictureBox1.Size.Width;
int height = pictureBox1.Size.Height;Label lb=new Label();
lb.Location=new Point(i*20,i*30);
lb.Size= new Size(158,30);
lb.BorderStyle = BorderStyle.FixedSingle;
//lb.AutoSize = true;
lb.Name = "lbName"+i;
lb.Text = ChannelName;
this.panel1.Controls.Add(lb);
lb.BackColor = System.Drawing.Color.Transparent;
lb.DoubleClick += new System.EventHandler(this.label_DoubleClick);
lb.MouseHover += new System.EventHandler(this.label_MouseHover);
lb.MouseLeave += new System.EventHandler(this.label_MouseLeave);
lb.MouseDown +=new MouseEventHandler(this.label_MouseDown);
lb.Tag = ***;
lb.BringToFront();
lb.BackColor = System.Drawing.Color.LemonChiffon;this.panel1.Invalidate();
}
动态创建控件很麻烦,主要是排版的问题,这是我以前写的打印工资条的代码,工资项目是不固定的,故我只能用动态的加列,
private void constructReport()
{
this.Detail.CanGrow=true;
this.Detail.CanShrink=true;
this.Detail.KeepTogether=true;
for(int i=0;i<dt.Columns.Count;i++)
{
if(i>8 && i%9==0)
{
this.m_currentY=this.m_currentY+this.m_defaultHeight*2;
this.m_currentX=0;
count++;
} TextBox txt=new TextBox();
txt.Location=new PointF(this.m_currentX,this.m_currentY);
this.m_currentX=this.m_currentX+this.m_defaultWidth;
txt.Width=this.m_defaultWidth;
txt.Height=this.m_defaultHeight;
txt.Border.BottomStyle=BorderLineStyle.Solid;
txt.Border.TopStyle=BorderLineStyle.Solid;
txt.Border.LeftStyle=BorderLineStyle.Solid;
txt.Border.RightStyle=BorderLineStyle.Solid;
txt.Text=dt.Columns[i].ColumnName.Trim();
txt.Alignment=TextAlignment.Center;
txt.VerticalAlignment=VerticalTextAlignment.Middle;
this.Detail.Controls.Add(txt); }
this.m_currentX=0f;
this.m_currentY=0.2f;
for(int i=0;i<dt.Columns.Count;i++)
{
if(i>8 && i%9==0)
{
this.m_currentY=this.m_currentY+this.m_defaultHeight*2;
this.m_currentX=0;
count++;
}
TextBox txt=new TextBox();
txt.Location=new PointF(this.m_currentX,this.m_currentY);
this.m_currentX=this.m_currentX+this.m_defaultWidth;
txt.Width=this.m_defaultWidth;
txt.Height=this.m_defaultHeight;
txt.Border.BottomStyle=BorderLineStyle.Solid;
txt.Border.TopStyle=BorderLineStyle.Solid;
txt.Border.LeftStyle=BorderLineStyle.Solid;
txt.Border.RightStyle=BorderLineStyle.Solid;
txt.Alignment=TextAlignment.Center;
txt.VerticalAlignment=VerticalTextAlignment.Middle;
txt.DataField=dt.Columns[i].ColumnName;
if(dt.Columns[i].DataType.ToString()=="System.Decimal")
txt.OutputFormat="#,##0.00";
this.Detail.Controls.Add(txt);
}
TextBox txt1=new TextBox();
txt1.Location=new PointF(0f,this.m_currentY+0.2f);
this.m_currentX=this.m_currentX+this.m_defaultWidth;
txt1.Width=this.m_defaultWidth;
txt1.Height=this.m_defaultHeight;
this.Detail.Controls.Add(txt1);
this.Detail.Height=this.m_defaultHeight*count+1f;
}