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;
}
}
}
}
}
}
}