/// <summary> /// 取得一个空闲的AccessItem,如果没有,就新建,且设置好这个事件监听。 /// </summary> /// <returns></returns> protected AccessItem getFreeAccessItem() { //首先判断LstAccessItem中是否有空闲的。 for (int i = 0; i < LstAccessItem.Count; i++) { //如果是空闲的,就取得这个 if (LstAccessItem[i].Visible == false) { LstAccessItem[i].Visible = true; //设置可见 flowLayoutPanel1.Controls.Add(LstAccessItem[i]); //将这个AccessItem加到布局中,以便显示啊。 return(LstAccessItem[i]); } } //到这类就表示,得新建一个 AccessItem ,然后设置各种事件了吧。 AccessItem AccessItem_Retrun = getAccessItem(); AccessItem_Retrun.Visible = true; LstAccessItem.Add(AccessItem_Retrun); init_event_AccessItem(AccessItem_Retrun); flowLayoutPanel1.Controls.Add(AccessItem_Retrun);//将这个AccessItem加到布局中,以便显示啊。 return(AccessItem_Retrun); }
/// <summary> /// 插入的话,应该不需要参数吧。 /// </summary> public void DataInsert() { DataRow dr = DT.NewRow(); //新建一行 default_DataRow(dr); //设置默认的 DT.Rows.Add(dr); //然后将这行加到DataTable中。 AccessItem item = getFreeAccessItem(); //取得一个空的AccessItem item.DR = dr; //设置这些数据 //并且设置取得焦点。 item.getFocus(); update(); }
/// <summary> /// 初始化单个 AccessItem的事件 /// </summary> /// <param name="item"></param> public virtual void init_event_AccessItem(AccessItem item) { item.DataUpdate += Item_DataUpdate; item.DataDelete += Item_DataDelete; item.DataCommmand += Item_DataCommmand; }