📄 subjectui.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 课程安排
{
public partial class SubjectUI : Form
{
private Subject curSubject = null;
private bool hasModify = false;
public SubjectUI()
{
InitializeComponent();
LoadData();
}
// 载入初始数据
private void LoadData()
{
this.listBox1.Items.Clear();
if (School.Subjects != null)
{
for (int i = 0; i < School.Subjects.Count; i++)
{
this.listBox1.Items.Add(School.Subjects[i].SubjectName);
}
}
if (this.listBox1.Items.Count <= 0)
return;
this.listBox1.SelectedIndex = 0;
if (Utility.IsNameString(this.listBox1.SelectedItem.ToString()))
{
this.lblSubjectInfo.Text = "当前科目: " + this.listBox1.SelectedItem.ToString();
LoadRelateData(School.GetSubject(this.listBox1.SelectedItem.ToString()));
}
}
// 载入与科目相关的信息
private void LoadRelateData(Subject subject)
{
if (subject != null)
{
List<string> sTeacher = new List<string>();
List<string> dTeacher = new List<string>();
if (subject.Teachers != null)
{
for (int i = 0; i < School.Teachers.Count; i++)
{
if (subject.HasTeacher(School.Teachers[i]))
{
sTeacher.Add(School.Teachers[i].TeacherName);
}
else
{
dTeacher.Add(School.Teachers[i].TeacherName);
}
}
}
else
{
for (int i = 0; i < School.Teachers.Count; i++)
{
dTeacher.Add(School.Teachers[i].TeacherName);
}
}
this.dragInfoControlTeacher.SourceStrings = sTeacher;
this.dragInfoControlTeacher.DestinationStrings = dTeacher;
}
}
// 保存与科目相关的信息
private void SaveRelateData(Subject subject)
{
if (subject != null)
{
IList<string> sTeacher = dragInfoControlTeacher.SourceStrings;
IList<string> dTeacher = dragInfoControlTeacher.DestinationStrings;
for (int i = 0; i < sTeacher.Count; i++)
{
Teacher teacher = School.GetTeacher(sTeacher[i]);
subject.AddTeacher(teacher);
teacher.AddSubject(subject);
}
for (int i = 0; i < dTeacher.Count; i++)
{
Teacher teacher = School.GetTeacher(dTeacher[i]);
subject.RemoveTeacher(teacher);
teacher.RemoveSubject(subject);
}
}
}
#region 内部函数
private void mDispose()
{
if (this.hasModify || this.dragInfoControlTeacher.HasModify)
{
this.hasModify = false;
this.dragInfoControlTeacher.HasModify = false;
if (MessageBox.Show("是否保存修改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
SaveRelateData(this.curSubject);
}
}
}
private void AddSubject()
{
frmSubjectName f = new 课程安排.frmSubjectName();
f.ShowDialog();
if (f.DialogResult == DialogResult.Yes)
{
string name = f.SubjectName;
EditLevel el = f.EditLevel;
if (Utility.IsNameString(name))
{
if (Utility.isRepeat(School.Subjects, name))
{
if (MessageBox.Show("该名称已经被使用,是否要重新输入?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
AddSubject();
}
}
else
{
this.listBox1.Items.Add(name);
School.CreateSubject(name, el);
//this.hasModify = true;
}
}
else
{
if (MessageBox.Show("该名称中包含了特殊字符(或为空值),是否要重新输入", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
AddSubject();
}
}
}
}
private void ModifySubjectName()
{
if (this.listBox1.SelectedIndex >= 0)
{
string oldName = listBox1.SelectedItem.ToString();
frmSubjectName f = new 课程安排.frmSubjectName(oldName);
f.ShowDialog();
if (f.DialogResult == DialogResult.Yes)
{
string name = f.SubjectName;
if (name != oldName)
{
if (Utility.IsNameString(name))
{
if (Utility.isRepeat(School.Subjects, name))
{
if (MessageBox.Show("该名称已经被使用,是否要重新输入?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
ModifySubjectName();
}
}
else
{
this.listBox1.Items[listBox1.SelectedIndex] = name;
Subject subject = School.GetSubject(oldName);
subject.SubjectName = name;
}
}
else
{
if (MessageBox.Show("该名称中包含了特殊字符(或为空值),是否要重新输入", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
ModifySubjectName();
}
}
}
}
}
}
private void RemoveSubject()
{
if (this.listBox1.SelectedItems != null)
{
if (this.listBox1.SelectedItems.Count > 0)
{
for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
{
string subjectName = this.listBox1.SelectedItems[i].ToString();
School.RemoveSubject(School.GetSubject(subjectName));
this.listBox1.Items.Remove(this.listBox1.SelectedItems[i]);
}
}
}
}
private void ClearSubject()
{
if (this.listBox1.Items.Count > 0)
{
this.listBox1.Items.Clear();
School.RemoveAllSubject();
}
}
#endregion
#region 用户事件
private void 保存到数据库ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.mDispose();
if (School.WriteSubjectToDB())
{
MessageBox.Show("科目信息已经保存到数据库中", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("信息保存失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.listBox1.SelectedItem == null)
{
if (this.listBox1.Items.Count > 0)
this.listBox1.SelectedIndex = 0;
else
return;
}
if (this.hasModify || this.dragInfoControlTeacher.HasModify)
{
this.hasModify = false;
this.dragInfoControlTeacher.HasModify = false;
if (MessageBox.Show("是否保存修改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
SaveRelateData(this.curSubject);
}
}
if (Utility.IsNameString(listBox1.SelectedItem.ToString()))
{
this.curSubject = School.GetSubject(listBox1.SelectedItem.ToString());
LoadRelateData(this.curSubject);
this.lblSubjectInfo.Text = "当前科目: " + listBox1.SelectedItem.ToString();
}
}
private void 添加学科ToolStripMenuItem_Click(object sender, EventArgs e)
{
AddSubject();
}
private void 修改科目名称ToolStripMenuItem_Click(object sender, EventArgs e)
{
ModifySubjectName();
}
private void 删除选择科目ToolStripMenuItem_Click(object sender, EventArgs e)
{
RemoveSubject();
}
private void 删除所有科目ToolStripMenuItem_Click(object sender, EventArgs e)
{
ClearSubject();
}
#endregion
#region 销毁对象
protected override void OnClosing(CancelEventArgs e)
{
mDispose();
base.OnClosing(e);
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
mDispose();
base.OnFormClosing(e);
}
#endregion
#region 获取和失去焦点
protected override void OnLostFocus(EventArgs e)
{
mDispose();
base.OnLostFocus(e);
}
protected override void OnGotFocus(EventArgs e)
{
LoadData();
base.OnGotFocus(e);
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -