using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace AIRS { /// /// GradeCount.xaml 的交互逻辑 /// public partial class GradeCount : Window { //委托事件 public delegate void SelectGrade(List grade_name,Boolean state); public static event SelectGrade SelectGradeEvent; public List list_grade = new List(); public Dictionary gradesum = new Dictionary(); public Dictionary aiRES = new Dictionary(); public String gradename = ""; public String gradetitle = ""; public GradeCount() { InitializeComponent(); } private void BtnLogin_Click(object sender, RoutedEventArgs e) { list_grade.Clear(); SelectGradeEvent(list_grade,true); } private void BtnExport_Click(object sender, RoutedEventArgs e) { if (gradesum.Keys.Count > 0) { string filename = ""; //申明保存对话框 SaveFileDialog dlg = new SaveFileDialog(); //默然文件后缀 dlg.DefaultExt = "xls"; //文件后缀列表 dlg.Filter = "Excel Files|*.xls"; //默然路径是系统当前路径 dlg.InitialDirectory = Directory.GetCurrentDirectory(); //保存对话框是否bai记忆上次du打开的目录 dlg.RestoreDirectory = false; dlg.FileName = gradename + " - " + gradetitle + ".xls"; dlg.Title = "导出Excel文件到"; //打开保存对话框 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { filename = dlg.FileName; if (filename.Trim() != "") { if (IsFileInUse(filename) && System.IO.File.Exists(filename)) { System.Windows.Forms.MessageBox.Show("无法导出!选择导出的文件正在被使用!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } StreamWriter sw = new StreamWriter(filename, false, Encoding.GetEncoding("gb2312")); StringBuilder sb = new StringBuilder(); //zm: sb.Append("图片" + "\t"); sb.Append("级别" + "\t"); sb.Append(Environment.NewLine); foreach (var res in aiRES) { //文件名+级别+其它 sb.Append(res.Key+"\t"); sb.Append(res.Value + "\t"); sb.Append(Environment.NewLine); } sb.Append(gname.Content.ToString() + "\t"); sb.Append(gcount.Content.ToString() + "\t"); sb.Append(Environment.NewLine); int sum = 0; foreach(string key in gradesum.Keys) { System.Windows.Forms.Application.DoEvents(); sb.Append(key + "\t"); sb.Append(gradesum[key].ToString() + "\t"); sb.Append(Environment.NewLine); sum += gradesum[key]; } sb.Append("合计" + "\t"); sb.Append(sum.ToString() + "\t"); sw.Write(sb.ToString()); sw.Flush(); sw.Close(); } if (System.Windows.Forms.MessageBox.Show("导出成功!\r\n是否打开Excel文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { System.Diagnostics.Process.Start(filename); } } } } /// /// 检测文件是否被其他程序占用 /// /// /// public static bool IsFileInUse(string fileName) { bool inUse = true; FileStream fs = null; try { fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None); inUse = false; } catch { } finally { if (fs != null) fs.Close(); } return inUse;//true表示正在使用,false没有使用 } private void Window_Loaded(object sender, RoutedEventArgs e) { double _top = this.gname.Height + 14; gradesum = gradesum.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value); foreach(string key in gradesum.Keys) { System.Windows.Controls.Label g_select = new System.Windows.Controls.Label(); g_select.Width = 70; g_select.Height = 37; g_select.Content = ""; g_select.Tag = key; g_select.BorderThickness = new System.Windows.Thickness(1); g_select.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center; g_select.SetValue(Canvas.TopProperty, _top); g_select.SetValue(Canvas.LeftProperty, 15.0); g_select.SetValue(Canvas.BottomProperty, double.NaN); g_select.SetValue(Canvas.RightProperty, double.NaN); g_select.FontSize = 20; g_select.FontWeight = FontWeights.Bold; g_select.BorderBrush = new SolidColorBrush(Colors.Black); canshow.Children.Add(g_select); System.Windows.Controls.CheckBox checkBox = new System.Windows.Controls.CheckBox(); checkBox.Tag = key; checkBox.IsChecked = false; checkBox.Checked += new RoutedEventHandler(check_checked); checkBox.Unchecked += new RoutedEventHandler(check_unchecked); checkBox.SetValue(System.Windows.Controls.CheckBox.StyleProperty, System.Windows.Application.Current.Resources["CheckBoxStyle"]); checkBox.SetValue(Canvas.TopProperty, _top - 13.5); checkBox.SetValue(Canvas.LeftProperty, 37.5); checkBox.SetValue(Canvas.BottomProperty, double.NaN); checkBox.SetValue(Canvas.RightProperty, double.NaN); canshow.Children.Add(checkBox); System.Windows.Controls.Label g_name = new System.Windows.Controls.Label(); g_name.Width = 200; g_name.Height = 37; g_name.Content = key; g_name.Tag = ""; //g_name.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(selectgrade); g_name.BorderThickness = new System.Windows.Thickness(1); g_name.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center; g_name.SetValue(Canvas.TopProperty, _top); g_name.SetValue(Canvas.LeftProperty, 85.0); g_name.SetValue(Canvas.BottomProperty, double.NaN); g_name.SetValue(Canvas.RightProperty, double.NaN); g_name.FontSize = 20; g_name.FontWeight = FontWeights.Bold; g_name.BorderBrush = new SolidColorBrush(Colors.Black); canshow.Children.Add(g_name); System.Windows.Controls.Label g_count = new System.Windows.Controls.Label(); g_count.Width = 150; g_count.Height = 37; g_count.Content = gradesum[key].ToString(); g_count.BorderThickness = new System.Windows.Thickness(1); g_count.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center; g_count.SetValue(Canvas.TopProperty, _top); g_count.SetValue(Canvas.LeftProperty, 284.5); g_count.SetValue(Canvas.BottomProperty, double.NaN); g_count.SetValue(Canvas.RightProperty, double.NaN); g_count.FontSize = 20; g_count.FontWeight = FontWeights.Bold; g_count.BorderBrush = new SolidColorBrush(Colors.Black); canshow.Children.Add(g_count); _top += 36; list_grade.Add(key); } this.canshow.Height = _top + 14; lbltitle.Content = gradename; ggrade.Content = gradetitle + ":"; } private void check_checked(object sender,RoutedEventArgs e) { System.Windows.Controls.CheckBox cb = (System.Windows.Controls.CheckBox)sender; list_grade.Remove(cb.Tag.ToString()); SelectGradeEvent(list_grade, false); } private void check_unchecked(object sender, RoutedEventArgs e) { System.Windows.Controls.CheckBox cb = (System.Windows.Controls.CheckBox)sender; list_grade.Add(cb.Tag.ToString()); SelectGradeEvent(list_grade, false); } private void selectgrade(object sender, MouseButtonEventArgs e) { System.Windows.Controls.Label lbl = (System.Windows.Controls.Label)sender; if(lbl.Tag.ToString()=="") { lbl.Tag = "s"; lbl.Foreground = new SolidColorBrush(Colors.Red); list_grade.Add(lbl.Content.ToString()); } else { lbl.Tag = ""; lbl.Foreground = new SolidColorBrush(Colors.Black); list_grade.Remove(lbl.Content.ToString()); } SelectGradeEvent(list_grade,false); } private void Window_MouseDown(object sender, MouseButtonEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { DragMove(); } } private void imgmin_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { imgmin.Visibility = Visibility.Hidden; imgmin1.Visibility = Visibility.Visible; } private void imgmin1_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { imgmin.Visibility = Visibility.Visible; imgmin1.Visibility = Visibility.Hidden; } private void imgmin1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { this.WindowState = WindowState.Minimized; } private void imgclosed_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { imgclosed.Visibility = Visibility.Hidden; imgclosed1.Visibility = Visibility.Visible; } private void imgclosed1_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { imgclosed.Visibility = Visibility.Visible; imgclosed1.Visibility = Visibility.Hidden; } private void imgclosed1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { list_grade.Clear(); SelectGradeEvent(list_grade, true); } } }