这个我是在winform的页面上做的
1. 首先是在页面上添加3个lable 第一次点击lable会有相应的数据被查询出来 第二次点击同一个lable会刷新所有的数据
2.点击不同的label会有颜色提示当前点击的是哪一个 第二次点击的时候会还原lable的颜色
3.根据本日 本周 本月查询数据 是根据时间段来查询的 所以应该要先获取到本日的时间段 本周的时间段和本月的时间段
本日 labDay 本周 labWeek 本月 labMonth
代码如下
1 public partial class frmSelCase 2 { 3 private List<Label> m_lstLabel = new List<Label>(); 4 } 5 6 //单数次颜色变为蓝色 偶数次颜色为默认色 7 bool[] labelClick = { false, false, false }; 8 9 private void initControls() 10 { 11 //三个lable的点击事件 12 labDay.Click += new EventHandler(labDay_Click); 13 labWeek.Click += new EventHandler(labWeek_Click); 14 labMonth.Click += new EventHandler(labMonth_Click); 15 16 initResonArray(); 17 for (int i = 0; i < m_lstLabel.Count; i++) 18 { 19 Label labLeaveReson = m_lstLabel[i]; 20 labLeaveReson.Click += new EventHandler(lab_Click); 21 } 22 } 23 24 private void initResonArray() 25 { 26 m_lstLabel.Add(labDay); 27 m_lstLabel.Add(labWeek); 28 m_lstLabel.Add(labMonth); 29 } 30 31 //将切换了lable颜色的事件我写到了一起 32 33 private void lab_Click(object sender, EventArgs e) 34 { 35 if (null == m_lstLabel) return; 36 if (null == sender) return; 37 Label labCurClick = (Label)sender; 38 39 for (int i = 0; i < m_lstLabel.Count; i++) 40 { 41 Label labReson = m_lstLabel[i]; 42 43 if (labReson.Name == labCurClick.Name && labelClick[i] == false) 44 { 45 if (labReson.BackColor != Color.FromArgb(16, 155, 246)) labReson.BackColor = Color.FromArgb(16, 155, 246); 46 if (labReson.ForeColor != Color.FromArgb(255, 255, 255)) labReson.ForeColor = Color.FromArgb(255, 255, 255); 47 labelClick[i] = true; 48 } 49 else 50 { 51 if (labReson.BackColor != Color.FromArgb(217, 229, 238)) labReson.BackColor = Color.FromArgb(217, 229, 238); 52 if (labReson.ForeColor != Color.FromArgb(17, 95, 124)) labReson.ForeColor = Color.FromArgb(17, 95, 124); 53 labelClick[i] = false; 54 } 55 } 56 } 57 58 //获取时间段 59 private void getDateRange(DateRange range, out DateTime startTime, out DateTime endTime) 60 { 61 startTime = DateTime.MinValue; 62 endTime = DateTime.MinValue; 63 64 DateTime dtNow = DateTime.Now; 65 66 switch (range) 67 { 68 case DateRange.Day: 69 startTime = dtNow.Date; 70 endTime = dtNow.AddDays(1).AddSeconds(-1); 71 break; 72 case DateRange.Week: 73 startTime = dtNow.Date.AddDays(1 -Convert.ToInt32(dtNow.DayOfWeek.ToString("d"))); 74 endTime = startTime.AddDays(7).AddSeconds(-1); 75 break; 76 case DateRange.Month: 77 startTime = dtNow.Date.AddDays(1 - DateTime.Now.Date.Day); 78 endTime = startTime.AddMonths(1).AddSeconds(-1); 79 break; 80 case DateRange.None: 81 default: 82 break; 83 } 84 } 85 86 //单击本日 查询本日的数据 再点击一下就还原lable的颜色和初始数据 87 private void labDay_Click(object sender, EventArgs e) 88 { 89 if (DateRange.Day == m_dateRange) 90 { 91 m_dateRange = DateRange.None; 92 } 93 else 94 { 95 m_dateRange = DateRange.Day; 96 } 97 getDateRange(m_dateRange, out m_dtFilter_StartTime, out m_dtFilter_EndTime); 98 String strInputText = InputText.ToUpper(); 99 if (SysDefine.FAILED == refreshList(0, strInputText)) 100 { 101 MessageBox.Show(this.ErrorText, "信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); 102 } 103 } 104 105 //单击本周 查询本周的数据 再点击一下就还原lable的颜色和初始数据 106 private void labWeek_Click(object sender, EventArgs e) 107 { 108 if (DateRange.Week == m_dateRange) 109 { 110 m_dateRange = DateRange.None; 111 } 112 else 113 { 114 m_dateRange = DateRange.Week; 115 } 116 117 getDateRange(m_dateRange, out m_dtFilter_StartTime, out m_dtFilter_EndTime); 118 119 String strInputText = InputText.ToUpper(); 120 if (SysDefine.FAILED == refreshList(0, strInputText)) 121 { 122 MessageBox.Show(this.ErrorText, "信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); 123 } 124 125 } 126 127 //单击本月 查询本月的数据 再点击一下就还原lable的颜色和初始数据 128 private void labMonth_Click(object sender, EventArgs e) 129 { 130 if (DateRange.Month == m_dateRange) 131 { 132 m_dateRange = DateRange.None; 133 } 134 else 135 { 136 m_dateRange = DateRange.Month; 137 } 138 139 getDateRange(m_dateRange, out m_dtFilter_StartTime, out m_dtFilter_EndTime); 140 141 String strInputText = InputText.ToUpper(); 142 if (SysDefine.FAILED == refreshList(0, strInputText)) 143 { 144 MessageBox.Show(this.ErrorText, "信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); 145 } 146 } 147 148 //将当前lable的状态定位四个 未选中 选中day 选中week 选中 Month 149 private DateRange m_dateRange = DateRange.None; 150 private enum DateRange 151 { 152 None = 0, 153 Day = 1, 154 Week = 2, 155 Month = 3 156 } 157 158 public String InputText 159 { 160 get { return ucPages.InputText; } 161 set { ucPages.InputText = value; } 163 } 164 165 private DateTime m_dtFilter_StartTime = DateTime.MinValue; 166 public DateTime Filter_StartDate 167 { 168 get { return m_dtFilter_StartTime; } 169 } 170 171 private DateTime m_dtFilter_EndTime = DateTime.MinValue; 172 public DateTime Filter_EndDate 173 { 174 get { return m_dtFilter_EndTime; } 175 }