using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; namespace Core.StlMes.Client.YdmBase { public partial class FrmRackSelect : Form { public FrmRackSelect() { InitializeComponent(); } private ArrayList localist; public ArrayList Localist { get { return localist; } set { localist = value; } } private ArrayList racklist; public ArrayList Racklist { get { return racklist; } set { racklist = value; } } private ArrayList selectlist; public ArrayList Selectlist { get { return selectlist; } set { selectlist = value; } } public bool flag = false; //关闭是什么引起的(右上角叉 还是关闭 还是确定,不是确定引起的不需要触发后面的事件) public ArrayList ReturnData = new ArrayList(); int locationcount = 0; //料位数量 int rackcount = 0; //料架数量 int rcakedcount = 0; //选择的料架数量(实时变化的) int rackedstartcount = 0; //起始选择的料架数量 private void FrmRackSelect_Load(object sender, EventArgs e) { InitListView(); InitVerScroll(this.listView1); InitVerScroll(this.listView2); InitVerScroll(this.listView3); locationcount = listView3.Items.Count; rackcount = listView1.Items.Count; rackedstartcount = listView2.Items.Count; } /// /// 设置listview的垂直下拉框 /// /// 要设置的listview private void InitVerScroll(ListView lv) { lv.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; //不显示列的标头 lv.MinimumSize = new Size(50, 150); //给定最小宽度为50给列的宽度为150(要小于listview的宽度,否则会出现水平滚动条) lv.FullRowSelect = true; //可选中整行 lv.Scrollable = true; //显示滚动条 lv.View = View.SmallIcon; lv.MultiSelect = false; } /// /// 初始化3个listview /// private void InitListView() { for (int i = 0; i < localist.Count; i++) { listView3.Items.Add(localist[i].ToString()); } for (int i = 0; i < racklist.Count; i++) { listView1.Items.Add(racklist[i].ToString()); } for (int i = 0; i < selectlist.Count; i++) { if(selectlist[i].ToString()!="") listView2.Items.Add(selectlist[i].ToString()); } } private void button1_Click(object sender, EventArgs e) //添加 { if (listView1.CheckedItems.Count <= 0) { MessageBox.Show("请在[供选择的料架]栏\n选择你要添加的料架", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } rcakedcount = listView2.Items.Count; int m = listView1.CheckedItems.Count; if (locationcount < rackcount) { if (rcakedcount < locationcount) { for (int i = 0; i < m; i++) { if (listView2.Items.Count == listView3.Items.Count) { MessageBox.Show("选择的料架已满!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { listView2.Items.Add(listView1.CheckedItems[0].Text); listView1.CheckedItems[0].Remove(); } } } else { MessageBox.Show("[选择的料架]栏的料架\n数量已满,无法添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else { if (rcakedcount < rackcount) { listView2.Items.Add(listView1.CheckedItems[0].Text); listView1.CheckedItems[0].Remove(); } else { MessageBox.Show("[供选择的料架]栏的料架\n已被选完,请维护基础数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } rcakedcount = listView2.Items.Count; } private void button2_Click(object sender, EventArgs e) //移除 { if (listView2.CheckedItems.Count <= 0) { MessageBox.Show("请在[选择的料架]栏选择\n你要移除的料架", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (listView2.Items.Count <= 0) { MessageBox.Show("[选择的料架]栏中不存在\n料架,无法移除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } listView1.Items.Add(listView2.CheckedItems[0].Text); listView2.CheckedItems[0].Remove(); } private void button3_Click(object sender, EventArgs e) //确定 { flag = false; ReturnData=new ArrayList(); //if (this.listView2.Items.Count == 0 && rcakedcount == 0) //{ // this.Close(); // return; //} //else //{ for (int i = 0; i < listView3.Items.Count; i++) { string msg = listView3.Items[i].Text.Trim(); if (i < listView2.Items.Count) msg = msg + "," + listView2.Items[i].Text; else msg = msg + "," + ""; ReturnData.Add(msg); } //} flag = true; this.Close(); } private void button4_Click(object sender, EventArgs e) //关闭 { this.Close(); } private void button5_Click(object sender, EventArgs e) //交换 { string str = ""; string str1 = ""; if (listView1.CheckedItems.Count == 1) { if (listView1.CheckedItems.Count > 0 && listView2.CheckedItems.Count > 0) { for (int i = 0; i < listView1.CheckedItems.Count; i++) { str = listView1.CheckedItems[i].Text; } //string str = listView1.SelectedItems[0].Text; //string str1 = listView2.SelectedItems[0].Text; for (int j = 0; j < listView2.CheckedItems.Count; j++) { str1 = listView2.CheckedItems[j].Text; } listView1.CheckedItems[0].Text = str1; listView2.CheckedItems[0].Text = str; } else { MessageBox.Show("请在[供选择的料架]和[选择的料架]\n选好需要交换的项目!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else if (listView1.CheckedItems.Count == 0) { MessageBox.Show("请在[供选择的料架]和[选择的料架]\n选好需要交换的项目!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { MessageBox.Show("在进行[供选择的料架]和[选择的料架]的交换时只允许选择单项!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } /// /// 双击选择料架 /// /// /// private void listView1_DoubleClick(object sender, EventArgs e) { int index = 0; if (this.listView1.SelectedItems.Count > 0)//判断listview有被选中项 { if (this.listView2.Items.Count == this.listView3.Items.Count) { MessageBox.Show("选择的料架已满!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } index = this.listView1.SelectedItems[0].Index;//取当前选中项的index,SelectedItems[0]这必须为0 String aa = listView1.Items[index].SubItems[0].Text;//用我们刚取到的index取被选中的某一列的值从0开始 if (aa != "") { this.listView2.Items.Add(aa); this.listView1.Items[index].Remove(); } } } private void button6_Click(object sender, EventArgs e) { if (this.listView2.CheckedItems.Count > 0 ) { int index = this.listView2.SelectedItems[0].Index; if (index >= 1) { String str = listView2.Items[index].SubItems[0].Text; String str1 = listView2.Items[index - 1].SubItems[0].Text; listView2.Items[index - 1].SubItems[0].Text = str; listView2.Items[index].SubItems[0].Text = str1; //int de = this.listView2.Items.IndexOf(listView2.FocusedItem) +1; } else { MessageBox.Show("数据行已在首行,无法上移!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else { MessageBox.Show("请选择需要上移的数据行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //if (listView2.SelectedItems.Count == 0) //{ // return; //} //listView2.BeginUpdate(); //ListViewItem lvi = new ListViewItem(); //if (listView2.SelectedItems[0].Index > 0) //{ // foreach (ListViewItem lvi in listView2.SelectedItems) // { // ListViewItem lviSelectedItem = lvi; // int indexSelectedItem = lvi.Index; // listView2.Items.RemoveAt(indexSelectedItem); // listView2.Items.Insert(indexSelectedItem - 1, lviSelectedItem); // } //} //listView2.EndUpdate(); //if (listView2.Items.Count > 0 && listView2.SelectedItems.Count > 0) //{ // listView2.Focus(); // listView2.SelectedItems[0].Focused = true; // listView2.SelectedItems[0].EnsureVisible(); //} } private void button7_Click(object sender, EventArgs e) { if (this.listView2.CheckedItems.Count > 0) { int index = this.listView2.SelectedItems[0].Index; if (index + 1 < this.listView2.Items.Count) { string str = listView2.Items[index].SubItems[0].Text; string str1 = listView2.Items[index + 1].SubItems[0].Text; listView2.Items[index + 1].SubItems[0].Text = str; listView2.Items[index].SubItems[0].Text = str1; } else { MessageBox.Show("数据行已在末行,无法下移!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else { MessageBox.Show("请选择需要下移的数据行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } private void listView2_ItemCheck(object sender, ItemCheckEventArgs e) { if (!listView2.Items[e.Index].Checked)//如果点击的CheckBoxes没有选中 { foreach (ListViewItem lv in listView2.Items) { if (lv.Checked)//取消所有已选中的CheckBoxes { lv.Checked = false; lv.Selected = false; } } listView2.Items[e.Index].Selected = true; } } private void listView2_SelectedIndexChanged(object sender, EventArgs e) { foreach (ListViewItem lv in listView2.Items) { if (lv.Selected) { lv.Checked = true; } else { if (listView2.SelectedIndices.Count > 0) { if (lv.Checked) { lv.Checked = false; } } } } } } }