FrmRackSelect.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Collections;
  10. namespace Core.StlMes.Client.YdmBase
  11. {
  12. public partial class FrmRackSelect : Form
  13. {
  14. public FrmRackSelect()
  15. {
  16. InitializeComponent();
  17. }
  18. private ArrayList localist;
  19. public ArrayList Localist
  20. {
  21. get { return localist; }
  22. set { localist = value; }
  23. }
  24. private ArrayList racklist;
  25. public ArrayList Racklist
  26. {
  27. get { return racklist; }
  28. set { racklist = value; }
  29. }
  30. private ArrayList selectlist;
  31. public ArrayList Selectlist
  32. {
  33. get { return selectlist; }
  34. set { selectlist = value; }
  35. }
  36. public bool flag = false; //关闭是什么引起的(右上角叉 还是关闭 还是确定,不是确定引起的不需要触发后面的事件)
  37. public ArrayList ReturnData = new ArrayList();
  38. int locationcount = 0; //料位数量
  39. int rackcount = 0; //料架数量
  40. int rcakedcount = 0; //选择的料架数量(实时变化的)
  41. int rackedstartcount = 0; //起始选择的料架数量
  42. private void FrmRackSelect_Load(object sender, EventArgs e)
  43. {
  44. InitListView();
  45. InitVerScroll(this.listView1);
  46. InitVerScroll(this.listView2);
  47. InitVerScroll(this.listView3);
  48. locationcount = listView3.Items.Count;
  49. rackcount = listView1.Items.Count;
  50. rackedstartcount = listView2.Items.Count;
  51. }
  52. /// <summary>
  53. /// 设置listview的垂直下拉框
  54. /// </summary>
  55. /// <param name="lv">要设置的listview</param>
  56. private void InitVerScroll(ListView lv)
  57. {
  58. lv.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; //不显示列的标头
  59. lv.MinimumSize = new Size(50, 150); //给定最小宽度为50给列的宽度为150(要小于listview的宽度,否则会出现水平滚动条)
  60. lv.FullRowSelect = true; //可选中整行
  61. lv.Scrollable = true; //显示滚动条
  62. lv.View = View.SmallIcon;
  63. lv.MultiSelect = false;
  64. }
  65. /// <summary>
  66. /// 初始化3个listview
  67. /// </summary>
  68. private void InitListView()
  69. {
  70. for (int i = 0; i < localist.Count; i++)
  71. {
  72. listView3.Items.Add(localist[i].ToString());
  73. }
  74. for (int i = 0; i < racklist.Count; i++)
  75. {
  76. listView1.Items.Add(racklist[i].ToString());
  77. }
  78. for (int i = 0; i < selectlist.Count; i++)
  79. {
  80. if(selectlist[i].ToString()!="")
  81. listView2.Items.Add(selectlist[i].ToString());
  82. }
  83. }
  84. private void button1_Click(object sender, EventArgs e) //添加
  85. {
  86. if (listView1.CheckedItems.Count <= 0)
  87. {
  88. MessageBox.Show("请在[供选择的料架]栏\n选择你要添加的料架", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  89. return;
  90. }
  91. rcakedcount = listView2.Items.Count;
  92. int m = listView1.CheckedItems.Count;
  93. if (locationcount < rackcount)
  94. {
  95. if (rcakedcount < locationcount)
  96. {
  97. for (int i = 0; i < m; i++)
  98. {
  99. if (listView2.Items.Count == listView3.Items.Count)
  100. {
  101. MessageBox.Show("选择的料架已满!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  102. return;
  103. }
  104. else
  105. {
  106. listView2.Items.Add(listView1.CheckedItems[0].Text);
  107. listView1.CheckedItems[0].Remove();
  108. }
  109. }
  110. }
  111. else
  112. {
  113. MessageBox.Show("[选择的料架]栏的料架\n数量已满,无法添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  114. return;
  115. }
  116. }
  117. else
  118. {
  119. if (rcakedcount < rackcount)
  120. {
  121. listView2.Items.Add(listView1.CheckedItems[0].Text);
  122. listView1.CheckedItems[0].Remove();
  123. }
  124. else
  125. {
  126. MessageBox.Show("[供选择的料架]栏的料架\n已被选完,请维护基础数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  127. return;
  128. }
  129. }
  130. rcakedcount = listView2.Items.Count;
  131. }
  132. private void button2_Click(object sender, EventArgs e) //移除
  133. {
  134. if (listView2.CheckedItems.Count <= 0)
  135. {
  136. MessageBox.Show("请在[选择的料架]栏选择\n你要移除的料架", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  137. return;
  138. }
  139. if (listView2.Items.Count <= 0)
  140. {
  141. MessageBox.Show("[选择的料架]栏中不存在\n料架,无法移除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  142. return;
  143. }
  144. listView1.Items.Add(listView2.CheckedItems[0].Text);
  145. listView2.CheckedItems[0].Remove();
  146. }
  147. private void button3_Click(object sender, EventArgs e) //确定
  148. {
  149. flag = false;
  150. ReturnData=new ArrayList();
  151. //if (this.listView2.Items.Count == 0 && rcakedcount == 0)
  152. //{
  153. // this.Close();
  154. // return;
  155. //}
  156. //else
  157. //{
  158. for (int i = 0; i < listView3.Items.Count; i++)
  159. {
  160. string msg = listView3.Items[i].Text.Trim();
  161. if (i < listView2.Items.Count)
  162. msg = msg + "," + listView2.Items[i].Text;
  163. else
  164. msg = msg + "," + "";
  165. ReturnData.Add(msg);
  166. }
  167. //}
  168. flag = true;
  169. this.Close();
  170. }
  171. private void button4_Click(object sender, EventArgs e) //关闭
  172. {
  173. this.Close();
  174. }
  175. private void button5_Click(object sender, EventArgs e) //交换
  176. {
  177. string str = "";
  178. string str1 = "";
  179. if (listView1.CheckedItems.Count == 1)
  180. {
  181. if (listView1.CheckedItems.Count > 0 && listView2.CheckedItems.Count > 0)
  182. {
  183. for (int i = 0; i < listView1.CheckedItems.Count; i++)
  184. {
  185. str = listView1.CheckedItems[i].Text;
  186. }
  187. //string str = listView1.SelectedItems[0].Text;
  188. //string str1 = listView2.SelectedItems[0].Text;
  189. for (int j = 0; j < listView2.CheckedItems.Count; j++)
  190. {
  191. str1 = listView2.CheckedItems[j].Text;
  192. }
  193. listView1.CheckedItems[0].Text = str1;
  194. listView2.CheckedItems[0].Text = str;
  195. }
  196. else
  197. {
  198. MessageBox.Show("请在[供选择的料架]和[选择的料架]\n选好需要交换的项目!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  199. return;
  200. }
  201. }
  202. else if (listView1.CheckedItems.Count == 0)
  203. {
  204. MessageBox.Show("请在[供选择的料架]和[选择的料架]\n选好需要交换的项目!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  205. return;
  206. }
  207. else
  208. {
  209. MessageBox.Show("在进行[供选择的料架]和[选择的料架]的交换时只允许选择单项!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  210. return;
  211. }
  212. }
  213. /// <summary>
  214. /// 双击选择料架
  215. /// </summary>
  216. /// <param name="sender"></param>
  217. /// <param name="e"></param>
  218. private void listView1_DoubleClick(object sender, EventArgs e)
  219. {
  220. int index = 0;
  221. if (this.listView1.SelectedItems.Count > 0)//判断listview有被选中项
  222. {
  223. if (this.listView2.Items.Count == this.listView3.Items.Count)
  224. {
  225. MessageBox.Show("选择的料架已满!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  226. return;
  227. }
  228. index = this.listView1.SelectedItems[0].Index;//取当前选中项的index,SelectedItems[0]这必须为0
  229. String aa = listView1.Items[index].SubItems[0].Text;//用我们刚取到的index取被选中的某一列的值从0开始
  230. if (aa != "")
  231. {
  232. this.listView2.Items.Add(aa);
  233. this.listView1.Items[index].Remove();
  234. }
  235. }
  236. }
  237. private void button6_Click(object sender, EventArgs e)
  238. {
  239. if (this.listView2.CheckedItems.Count > 0 )
  240. {
  241. int index = this.listView2.SelectedItems[0].Index;
  242. if (index >= 1)
  243. {
  244. String str = listView2.Items[index].SubItems[0].Text;
  245. String str1 = listView2.Items[index - 1].SubItems[0].Text;
  246. listView2.Items[index - 1].SubItems[0].Text = str;
  247. listView2.Items[index].SubItems[0].Text = str1;
  248. //int de = this.listView2.Items.IndexOf(listView2.FocusedItem) +1;
  249. }
  250. else
  251. {
  252. MessageBox.Show("数据行已在首行,无法上移!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  253. return;
  254. }
  255. }
  256. else
  257. {
  258. MessageBox.Show("请选择需要上移的数据行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  259. return;
  260. }
  261. //if (listView2.SelectedItems.Count == 0)
  262. //{
  263. // return;
  264. //}
  265. //listView2.BeginUpdate();
  266. //ListViewItem lvi = new ListViewItem();
  267. //if (listView2.SelectedItems[0].Index > 0)
  268. //{
  269. // foreach (ListViewItem lvi in listView2.SelectedItems)
  270. // {
  271. // ListViewItem lviSelectedItem = lvi;
  272. // int indexSelectedItem = lvi.Index;
  273. // listView2.Items.RemoveAt(indexSelectedItem);
  274. // listView2.Items.Insert(indexSelectedItem - 1, lviSelectedItem);
  275. // }
  276. //}
  277. //listView2.EndUpdate();
  278. //if (listView2.Items.Count > 0 && listView2.SelectedItems.Count > 0)
  279. //{
  280. // listView2.Focus();
  281. // listView2.SelectedItems[0].Focused = true;
  282. // listView2.SelectedItems[0].EnsureVisible();
  283. //}
  284. }
  285. private void button7_Click(object sender, EventArgs e)
  286. {
  287. if (this.listView2.CheckedItems.Count > 0)
  288. {
  289. int index = this.listView2.SelectedItems[0].Index;
  290. if (index + 1 < this.listView2.Items.Count)
  291. {
  292. string str = listView2.Items[index].SubItems[0].Text;
  293. string str1 = listView2.Items[index + 1].SubItems[0].Text;
  294. listView2.Items[index + 1].SubItems[0].Text = str;
  295. listView2.Items[index].SubItems[0].Text = str1;
  296. }
  297. else
  298. {
  299. MessageBox.Show("数据行已在末行,无法下移!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  300. return;
  301. }
  302. }
  303. else
  304. {
  305. MessageBox.Show("请选择需要下移的数据行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  306. return;
  307. }
  308. }
  309. private void listView2_ItemCheck(object sender, ItemCheckEventArgs e)
  310. {
  311. if (!listView2.Items[e.Index].Checked)//如果点击的CheckBoxes没有选中
  312. {
  313. foreach (ListViewItem lv in listView2.Items)
  314. {
  315. if (lv.Checked)//取消所有已选中的CheckBoxes
  316. {
  317. lv.Checked = false;
  318. lv.Selected = false;
  319. }
  320. }
  321. listView2.Items[e.Index].Selected = true;
  322. }
  323. }
  324. private void listView2_SelectedIndexChanged(object sender, EventArgs e)
  325. {
  326. foreach (ListViewItem lv in listView2.Items)
  327. {
  328. if (lv.Selected)
  329. {
  330. lv.Checked = true;
  331. }
  332. else
  333. {
  334. if (listView2.SelectedIndices.Count > 0)
  335. {
  336. if (lv.Checked)
  337. {
  338. lv.Checked = false;
  339. }
  340. }
  341. }
  342. }
  343. }
  344. }
  345. }