📄 form_xyxk.cs
字号:
this.lst_xyxk.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lst_xyxk_MouseDown);
this.lst_xyxk.DoubleClick += new System.EventHandler(this.lst_xyxk_DoubleClick);
this.lst_xyxk.SelectedIndexChanged += new System.EventHandler(this.lst_xyxk_SelectedIndexChanged);
//
// Form_xyxk
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(792, 573);
this.Controls.Add(this.btn_view);
this.Controls.Add(this.btn_commit);
this.Controls.Add(this.btn_delall);
this.Controls.Add(this.btn_addall);
this.Controls.Add(this.btn_del);
this.Controls.Add(this.btn_add);
this.Controls.Add(this.lst_xkxy);
this.Controls.Add(this.lst_xyxk);
this.Controls.Add(this.lbl_tjkc);
this.Controls.Add(this.lbl_kcmc);
this.Controls.Add(this.cbo_yxfx);
this.Controls.Add(this.label1);
this.Controls.Add(this.lbl_wxkxy);
this.Controls.Add(this.lbl_yxkxy);
this.Controls.Add(this.cbo_wxkxy);
this.Controls.Add(this.cbo_yxkxy);
this.Controls.Add(this.cbo_zyk);
this.Controls.Add(this.lbl_zyk);
this.Controls.Add(this.Grd_xyxk);
this.Name = "Form_xyxk";
this.Text = "学员选课";
this.Load += new System.EventHandler(this.Form_xyxk_Load);
((System.ComponentModel.ISupportInitialize)(this.Grd_xyxk)).EndInit();
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form_xyxk());
}
private void Form_xyxk_Load(object sender, System.EventArgs e)
{
ToolTip tolTip = new ToolTip();
lst_xkxy.Items.Clear();
lst_xyxk.Items.Clear();
Grd_xyxk.DataSource = null;
opDtset.addDateToDtSet( dbAccess.sel_Yxfx, dbAccess.tab_Subject, dbAccess.subNo, dbAccess.subName );
///调用将所有的数据从数据库中读入DataSet的subject表中的方法.+1次重载
opDtset.addDateToDtSet( dbAccess.sel_Zyk, dbAccess.tab_Spec, dbAccess.speNo,
dbAccess.subNo, dbAccess.speName );
///调用将所有的数据从数据库中读入DataSet的speciality表中的方法.+2次重载
opDtset.addDateToDtSet( dbAccess.sel_Kls, dbAccess.tab_Kls, dbAccess.couNo, dbAccess.speNo );
///调用将所有的数据从数据库中读入DataSet的knowledgeSystem表中的方法.+1次重载
opDtset.addDateToDtSet( dbAccess.sel_Cour, dbAccess.tab_Cour, dbAccess.couNo, dbAccess.couName );
///调用将所有的数据从数据库中读入DataSet的Course表中的方法.+1次重载
opDtset.sheTable( cbo_yxfx, dbAccess.tab_Subject, dbAccess.subName );
///调用将所有字段从DataSet表中添加进ComboBox中的方法
tolTip.SetToolTip( lst_xyxk, "单击选中课程,双击可添加此课程!" );
tolTip.SetToolTip( lst_xkxy, "单击选中课程,双击可删除此课程!" );
format_Btnfalse( );///格式化按钮的状态
}
private void chickBtn( )
{ ///按照两个列表框中不同的项目数量,决定按钮的显示状态及焦点的设置,参数规则同上个方法
if ( common.lstCount[0] != 0 && common.lstCount[1] == 0 )
{
state_Btnadd();
lst_xyxk.SetSelected( 0, true );
}
else if ( common.lstCount[0] == 0 && common.lstCount[1] != 0 )
{
state_Btndel();
lst_xkxy.SetSelected( 0, true );
}
else if ( common.lstCount[1] == 0 && common.lstCount[1] == 0 )
{
format_Btnfalse();
}
else
{ ///最后一个条件,肯定是两个列表框中均有记录,因此,将焦点放在"课程名称"列表框的第一条记录上
unformat_Btnfalse();
int xkxyIndex = lst_xkxy.SelectedIndex;
if ( xkxyIndex != -1 )
lst_xkxy.SetSelected( xkxyIndex, false );
lst_xyxk.SetSelected( 0, true );
} ///虽然此方法亦可放在common类中,但每次调用却需将所有按钮作为参数传递,因此,从性能上考虑,放在了此处
}
private void format_Btnfalse()
{
btn_add.Enabled = false;
btn_addall.Enabled = false;
btn_del.Enabled = false;
btn_delall.Enabled = false;
btn_commit.Enabled = false;
}
private void unformat_Btnfalse()
{
btn_add.Enabled = true;
btn_addall.Enabled = true;
btn_del.Enabled = true;
btn_delall.Enabled = true;
btn_commit.Enabled = true;
}
private void state_Btnadd()
{
btn_add.Enabled = true;
btn_addall.Enabled = true;
btn_del.Enabled = false;
btn_delall.Enabled = false;
btn_commit.Enabled = false;
}
private void state_Btndel()
{
btn_add.Enabled = false;
btn_addall.Enabled = false;
btn_del.Enabled = true;
btn_delall.Enabled = true;
btn_commit.Enabled = true;
}
private void btnFoucs()
{
if ( common.lstCount[0] == 0 )
btn_del.Focus();
else if ( common.lstCount[1] == 0 )
btn_add.Focus();
else if ( common.lstCount[0] != 0 && common.lstCount[1] != 0 && lst_xyxk.Focus() == true )
btn_add.Focus();
else if ( common.lstCount[0] != 0 && common.lstCount[1] != 0 && lst_xkxy.Focus() == true )
btn_del.Focus();
}
private void cbo_yxfx_SelectedIndexChanged(object sender, System.EventArgs e)
{
com.clear_AllCbo( cbo_zyk, cbo_yxkxy, cbo_wxkxy );
lst_xyxk.Items.Clear();
int itemNo = opDtset.selCol( cbo_yxfx, dbAccess.tab_Subject, dbAccess.subNo );
///调用查找与当前ComboBox所显示的字段相对应的No字段的方法,并将其返回值作为下一步查询的条件
opDtset.sheTable( cbo_zyk, dbAccess.tab_Spec, dbAccess.speName, dbAccess.subNo, itemNo );
///以与cbo_yxfx中显示的字段相对应的No字段为条件,查找表Spec中的Name字段并将其值赋给cbo_zyk。+2次重载
com.chickListItemCount( lst_xyxk, lst_xkxy );
chickBtn( );
btnFoucs();
}
private void cbo_zyk_SelectedIndexChanged(object sender, System.EventArgs e)
{
addLstXyxk(); ///此方法将会在"全部删除"按钮中使用
}
private void addLstXyxk() ///将与该下拉框中显示的专业名称相对应的课程显示在"课程名称"列表框中
{
lst_xyxk.Items.Clear();
///考虑到在"全部删除"中使用此方法时,要以"专业名称"下拉框中当前字段为条件显示课程,故使用selCol的+2次重载的方法
int zyNo = opDtset.selCol( cbo_zyk, dbAccess.tab_Spec, dbAccess.speNo, dbAccess.speName );
aryList = opDtset.addAry( dbAccess.tab_Kls, dbAccess.speNo, dbAccess.couNo, zyNo);
opDtset.addList( lst_xyxk, lst_xkxy, dbAccess.tab_Cour, dbAccess.couNo, dbAccess.couName );
com.chickListItemCount( lst_xyxk, lst_xkxy );
chickBtn( );
btnFoucs();
}
private void lst_xyxk_DoubleClick(object sender, System.EventArgs e)
{
addLst(); ///与添加按钮执行相同的操作
}
private void addLst() ///在无异常发生的情况下,将"课程名称"列表框中所选中的字段添加进"添加课程"列表框中
{
com.lst_Insert( lst_xyxk, lst_xkxy );
com.chickListItemCount( lst_xyxk, lst_xkxy );
chickBtn();
btnFoucs();
}
private void lst_xkxy_DoubleClick(object sender, System.EventArgs e)
{
delLst(); ///与删除按钮执行相同的操作
}
private void delLst()
{ ///在无异常发生的情况下,先删除选中的课程,再清空"课程名称"列表框,最后显示对应于当前的"专业名称"的课程
com.delListItem( lst_xkxy );
lst_xyxk.Items.Clear();
opDtset.addList( lst_xyxk, lst_xkxy, dbAccess.tab_Cour, dbAccess.couNo, dbAccess.couName );
///由于当前全局变量的数组中存放的就是对应于当前的"专业名称"的课程,因此不必再次判断课程名称与专业名称是否匹配
com.chickListItemCount( lst_xyxk, lst_xkxy );
chickBtn( );
btnFoucs();
}
private void lst_xyxk_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
com.setLstFoucs( lst_xyxk, lst_xkxy, btn_add, btn_del );
}
private void lst_xkxy_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
com.setLstFoucs( lst_xkxy, lst_xyxk, btn_add, btn_del );
}
private void btn_add_Click(object sender, System.EventArgs e)
{
addLst(); ///与双击"课程名称"列表框执行相同的操作
}
private void btn_del_Click(object sender, System.EventArgs e)
{
delLst(); ///与双击"添加课程"列表框执行相同的操作
}
private void btn_addall_Click(object sender, System.EventArgs e)
{ ///将"课程名称"列表框中所有记录一次性添加进"添加课程"列表框中
for ( int i = 0; i < common.lstCount[0]; i++ )
lst_xkxy.Items.Add( lst_xyxk.Items[i].ToString() );
lst_xyxk.Items.Clear();
com.chickListItemCount( lst_xyxk, lst_xkxy );
chickBtn();
btnFoucs();
}
private void btn_delall_Click(object sender, System.EventArgs e)
{
lst_xkxy.Items.Clear();
addLstXyxk(); ///与"专业名称"下拉框的Change事件使用相同的方法
btnFoucs();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -