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