void p_OnAssignStudent(object sender, AssignStudentEventArgs e) { //1. 檢查目地端是否有指定學生, ucContentCell targetCell = this.dicLayoutCells[e.Coordinate]; if (targetCell.Student != null) { string msg = string.Format("是否將此座位從『{0}』換成『{1}』?", targetCell.Student.Name, e.Student.Name ); if (MessageBox.Show(msg, "注意", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.No) return; else //清除位置上原本的學生 { string origStudID = targetCell.Student.ID; targetCell.Student.SeatX = ""; targetCell.Student.SeatY = ""; targetCell.ClearData(); if (!updatedStudentIDs.Contains(origStudID)) updatedStudentIDs.Add(origStudID); //把有修改的學生ID紀錄起來,以備儲存時候用。 this.stud_coords.Remove(origStudID); } } //2. 檢查此學生是否有排過座位,如果是,則把原來的座位資訊清除,然後指定到新座位。 string studID = e.Student.ID; if (this.stud_coords.ContainsKey(studID)) { //清除這位學生原來座位的資訊。 CellCoordinate old_coord = this.stud_coords[studID]; ucContentCell oldCell = this.dicLayoutCells[old_coord]; if (oldCell.Student != null) { string oldStudID = oldCell.Student.ID; oldCell.Student.SeatX = ""; oldCell.Student.SeatY = ""; oldCell.ClearData(); if (!updatedStudentIDs.Contains(oldStudID)) updatedStudentIDs.Add(oldStudID); //把刪除位置的學生ID紀錄起來,以備儲存時候用。 if (this.stud_coords.ContainsKey(oldStudID)) this.stud_coords.Remove(oldStudID); } } //3. 指定到新位置 ucContentCell newCell = this.dicLayoutCells[e.Coordinate]; newCell.Student = e.Student; e.Student.SeatX = e.Coordinate.X.ToString(); e.Student.SeatY = e.Coordinate.Y.ToString(); this.stud_coords.Add(studID, e.Coordinate); if (!updatedStudentIDs.Contains(e.Student.ID)) updatedStudentIDs.Add(e.Student.ID); //把刪除位置的學生ID紀錄起來,以備儲存時候用。 //4. Refresh Listbox this.fillListBox(); }
private void ucTransparentPanel1_DragDrop(object sender, DragEventArgs e) { SeatTableStudent student = (SeatTableStudent)e.Data.GetData("EMBACore.Forms.SeatTable.SeatTableStudent"); if (this.OnAssignStudent != null) { AssignStudentEventArgs args = new AssignStudentEventArgs(); args.Student = student; args.Coordinate = Coordinate; this.OnAssignStudent(this, args); } //this.Student = student; //MessageBox.Show(this.Student.Name); }