110,535
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SalesManage.UI;
using System.Collections;
namespace SalesManage
{
public partial class fertilizerType : Form
{
public fertilizerType()
{
InitializeComponent();
}
private void fertilizerType_Load(object sender, EventArgs e)
{
PQGrid g = new PQGrid(4,4,30, 30);//创建组件
ArrayList al = new ArrayList();
for (int i = 0; i < 20; i++)
{//创建模拟数据
ArrayList a = new ArrayList();
a.Add("aa"+i.ToString());
a.Add("ab" + i.ToString());
a.Add("ac" + i.ToString());
a.Add("ad" + i.ToString());
al.Add(a);
}
g.bindData(al, "SalesManage.UI.PQGItem");//绑定数据
this.Controls.Add(g);//添加到窗口
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
namespace SalesManage.UI
{
public partial class PQGrid : UserControl
{
public int _rowNum;
public int _columnNum;
public string _direction = "v";
private int _columnWidth;
private int _rowHeight;
private int _spaceV=5;
private int _spaceH=5;
private ArrayList _item = new ArrayList();
private Point point = new Point();
public PQGrid(int rowNum,int columnNum,int columnWidth, int rowHeight)
{//设置组件行列数及单元格宽高
InitializeComponent();
_rowNum = rowNum;
_columnNum = columnNum;
_columnWidth = columnWidth;
_rowHeight = rowHeight;
Size s=new Size();
s.Width=columnNum*columnWidth;
s.Height=rowNum*rowHeight;
this.Size = s;
}
public PQGrid(int rowNum,int columnNum,int cw, int rh,int spaceV,int spaceH)
{
InitializeComponent();
_rowNum = rowNum;
_columnNum = columnNum;
_columnWidth = cw;
_rowHeight = rh;
_spaceH = spaceH;
_spaceV = spaceV;
}
public void bindData(ArrayList al,string item)
{//根据数据源动态创建子元件并排列
int n = al.Count;
if(n<1)return;
int pNum = Convert.ToInt32(Math.Round(n / (_rowNum * _columnNum)+0.5));//计算页数
int itemNum = 0;
Type type = Type.GetType(item);
for (int p = 0; p < pNum;p++){
for (int i = 0; i < _rowNum; i++) {
for (int j = 0; j < _columnNum;j++){
Object obj=Activator.CreateInstance(type);//创建子元件实例
point.X = j % _columnNum * (_columnWidth + _spaceH) + _spaceH;
point.Y = i * (_rowHeight + _spaceV) + _spaceV;
if (_direction == "v")point.Y += p * (_rowNum * (_rowHeight + _spaceV) + _spaceV);
else point.X += p * (_columnNum * (_columnWidth + _spaceH) + _spaceH);
((Control)obj).Location=point;//设置坐标
this.Controls.Add((Control)obj);//添加子元件到组件上
((IPQGItem)obj).bindData((ArrayList)al[itemNum]);//为子元件绑定数据
itemNum++;
if (itemNum > n - 1)return;
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
namespace SalesManage.UI
{
public partial class PQGItem : UserControl,IPQGItem
{
public PQGItem()
{
InitializeComponent();
}
public void bindData(ArrayList al)
{
Label tb = new Label();
tb.Text = al[0].ToString();
tb.BringToFront();
this.Controls.Add(tb);
}
}
}
using System.Collections;
namespace SalesManage.UI
{
interface IPQGItem
{
void bindData(ArrayList al);
}
}