using DevExpress.XtraDiagram.Bars; using NPOI.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace OTSIncAReportApp._1_UI.OTSReportExport { /// /// 规则分组选择器 /// public partial class RuleGroupSelector: Form { private ContextMenuStrip contextMenuStrip1; public DataTable dt; public List List_RuleTable; //private DataTable RuleData = new DataTable(); int listIndex = -1; public RuleGroupSelector(DataTable a_dataTable, List a_List_RuleTable) { InitializeComponent(); dt = a_dataTable.Copy(); List_RuleTable = a_List_RuleTable.Copy(); } private void RuleGroupSelector_Load(object sender, EventArgs e) { checkedListBox1.Items.Clear(); checkedListBox1.MouseDown += checkedListBox1_MouseDown; for (int i = 0; i < dt.Rows.Count; i++) { checkedListBox1.Items.Add(dt.Rows[i]["GroupName"]); } for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["display"].ToString() == "0") { checkedListBox1.SetItemChecked(i, false); } else { checkedListBox1.SetItemChecked(i, true); } } } private void checkedListBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { for (int i = 0; i < checkedListBox2.Items.Count; i++) { if (checkedListBox2.GetItemChecked(i)) { List_RuleTable[listIndex].Rows[i]["display"] = "1"; } else { List_RuleTable[listIndex].Rows[i]["display"] = "0"; } } // 获取点击位置的项索引 int index = checkedListBox1.IndexFromPoint(e.Location); if (index == -1) { return; } listIndex = index; for (int i = 0; i < List_RuleTable.Count; i++) { if (dt.Rows[i]["GroupId"].ToString() == List_RuleTable[listIndex].TableName.ToString()) { checkedListBox2.Items.Clear(); for (int a = 0; a < List_RuleTable[listIndex].Rows.Count; a++) { checkedListBox2.Items.Add(List_RuleTable[listIndex].Rows[a]["StrName"]); } for (int a = 0; a < List_RuleTable[listIndex].Rows.Count; a++) { if (List_RuleTable[listIndex].Rows[a]["display"].ToString() == "0") { checkedListBox2.SetItemChecked(a, false); } else { checkedListBox2.SetItemChecked(a, true); } } } } } } private void button2_Click(object sender, EventArgs e) { this.Close(); } private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < checkedListBox2.Items.Count; i++) { if (checkedListBox2.GetItemChecked(i)) { List_RuleTable[listIndex].Rows[i]["display"] = "1"; } else { List_RuleTable[listIndex].Rows[i]["display"] = "0"; } } for (int i = 0; i < dt.Rows.Count; i++) { if (!checkedListBox1.GetItemChecked(i)) { dt.Rows[i]["display"] = "0"; } else { dt.Rows[i]["display"] = "1"; } } this.Close(); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { //CheckBox checkBox = sender as CheckBox; //// 根据CheckBox的状态设置CheckedListBox的所有项 //for (int i = 0; i < checkedListBox1.Items.Count; i++) //{ // checkedListBox1.SetItemChecked(i, checkBox.Checked); //} if (checkBox1.Checked) { for (int i = 0; i < List_RuleTable.Count; i++) { for (int a = 0; a < List_RuleTable[i].Rows.Count; a++) { List_RuleTable[i].Rows[a]["display"] = "1"; } } for (int i = 0; i < checkedListBox1.Items.Count; i++) { checkedListBox1.SetItemChecked(i, true); } for (int i = 0; i < checkedListBox2.Items.Count; i++) { checkedListBox2.SetItemChecked(i, true); } } else { for (int i = 0; i < List_RuleTable.Count; i++) { for (int a = 0; a < List_RuleTable[i].Rows.Count; a++) { List_RuleTable[i].Rows[a]["display"] = "0"; } } for (int i = 0; i < checkedListBox1.Items.Count; i++) { checkedListBox1.SetItemChecked(i, false); } for (int i = 0; i < checkedListBox2.Items.Count; i++) { checkedListBox2.SetItemChecked(i, false); } } } private void checkedListBox1_MouseClick(object sender, MouseEventArgs e) { } private void checkedListBox2_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { // 获取点击位置的项索引 int index = checkedListBox2.IndexFromPoint(e.Location); if (index == -1) return; //for (int i = 0; i < List_RuleTable[listIndex].Rows.Count; i++) //{ if (checkedListBox2.GetItemChecked(index)) { List_RuleTable[listIndex].Rows[index]["display"] = "0"; } else { List_RuleTable[listIndex].Rows[index]["display"] = "1"; } //} } } private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { // 获取当前操作的条目索引 int index = e.Index; if(index==-1) return; if (listIndex == -1) return; if (!checkedListBox1.GetItemChecked(index)) { for (int i = 0; i < List_RuleTable[listIndex].Rows.Count; i++) { checkedListBox2.Items.Clear(); for (int a = 0; a < List_RuleTable[listIndex].Rows.Count; a++) { checkedListBox2.Items.Add(List_RuleTable[listIndex].Rows[a]["StrName"]); } for (int a = 0; a < List_RuleTable[listIndex].Rows.Count; a++) { List_RuleTable[listIndex].Rows[a]["display"] = "1"; checkedListBox2.SetItemChecked(a, true); } } } else { for (int i = 0; i < List_RuleTable[listIndex].Rows.Count; i++) { checkedListBox2.Items.Clear(); for (int a = 0; a < List_RuleTable[listIndex].Rows.Count; a++) { checkedListBox2.Items.Add(List_RuleTable[listIndex].Rows[a]["StrName"]); } for (int a = 0; a < List_RuleTable[listIndex].Rows.Count; a++) { List_RuleTable[listIndex].Rows[a]["display"] = "0"; checkedListBox2.SetItemChecked(a, false); } } } } } }