转载

丰富“WinForms” 的一个别样"项目"(学生管理)

一个别样的 WinForms 项目,他并没多么的新颖,但是它的用处确实有点多,或许会有你需要的地方;如果你对 WinForms 中那么多控件无法把握,又或者是你根本就不懂,那我觉得你应该好好看看,如果一个人的人生命运无法去选择时,那我觉得接受它将是冲刺命运终点的最好动力,一切的不公平都是你为了躲避困难而找的借口,年轻人就需要不平坦的人生道路,通过刻苦奋斗得来的果实永远是最甜、平坦的人生亦是最幸福的瞬间。

那首先就是项目的 框架 分别是: 登录(FrmLogin )——> 主界面(FrmMain )——> 修改密码(FrmUpdate) ——> 添加/修改/删除 学生基本信息等。

框架搭好之后,我们了解一些框架内的代码吧!至于具体的一些 控件 呢!只能是自己慢慢去看看,有些注意点大家可以记下,在控件生成后要及时去修改控件的“ Name ”的属性,如果够 专业 就尽量取专业点名字,那样对你可能会有 帮助 的。

当界面形成后, 事件 会是你填写代码的最大 障碍 ,所以WinForms的几个事件需要认真记住:(单击) Click ,当界面显示在眼前就形成的( Load ),窗体正在运行的( FormClosing ),(鼠标在界面移动) mouseClick

1 .登录界面(FrmLogin)

丰富“WinForms” 的一个别样"项目"(学生管理)

点击登陆进去的代码:

string str = "Data source=.;Initial catalog=Myschool;Uid=sa"; SqlConnection con = new SqlConnection(str); string sql = "select count(1) from student where studentname='"+txtUserName.Text+"' and Loginpwd='"+txtPwd.Text+"'"; SqlCommand cmd = new SqlCommand(sql,con); try {  con.Open();  int count=Convert.ToInt32(cmd.ExecuteScalar());  if (count>0)  {   //隐藏原界面   this.Hide();  //跳转至主界面   FormMain frm = new FormMain();   Tool.pwd = txtPwd.Text;   frm.Show();  } } catch (Exception) {  MessageBox.Show("出现异常"); } finally  {  con.Close(); } 

2.跳转主界面(FrmMain)

丰富“WinForms” 的一个别样"项目"(学生管理)

菜单控件,工具控件、右键(contextMenuStrip)控件,ListView控件、视图等

丰富“WinForms” 的一个别样"项目"(学生管理)

其中有 ListView五大视图

1.大图标(LargeIcon)

2.小图标(SmallIcon)

3.列表(List)

4.详细信息(Detail)

5.平铺(Tile)

生成上方主界面ListView代码:

private void btnBig_Click(object sender, EventArgs e) {  //设置listview的属性view为大图标  lvlist.View = View.LargeIcon; } private void btnSmall_Click(object sender, EventArgs e) {  //设置listview的属性view为小图标  lvlist.View = View.SmallIcon; } private void btnTile_Click(object sender, EventArgs e) {  //设置listview的属性view为平铺  lvlist.View = View.Tile; } private void btnList_Click(object sender, EventArgs e) {  //设置listview的属性view为列表  lvlist.View = View.List; } private void btnDetails_Click(object sender, EventArgs e) {  //设置listview的属性view为详细信息  lvlist.View = View.Details; } 

跳转至其它的各个功能的窗体:

private void TsmiUpdate_Click(object sender, EventArgs e) {  //修改密码  FrmUpdate frm = new FrmUpdate();  frm.Show(); } private void lvlist_SelectedIndexChanged(object sender, EventArgs e) { } private void StuName_Click(object sender, EventArgs e) {  //查找  this.Hide();  FrmColor frm = new FrmColor();  frm.Show(); } 

3.修改密码(FrmUpdate)

丰富“WinForms” 的一个别样"项目"(学生管理)

判断密码是否为空,修改密码是否成功

private void btnupdate_Click(object sender, EventArgs e)  {    string name = string.Empty;   if (txtoldpwd.Text==name)   {   DialogResult result=MessageBox.Show("原密码为空","通知",MessageBoxButtons.YesNo,MessageBoxIcon.Information);   if (result==DialogResult.No)   {    this.Close();   }   }    if (txtnewpwd.Text == name)   {    DialogResult result = MessageBox.Show("新密码密码为空", "通知", MessageBoxButtons.YesNo, MessageBoxIcon.Information);    if (result == DialogResult.No)    {     this.Close();    }   }    if(txtOK.Text == name)   {    DialogResult result = MessageBox.Show("确认密码为空", "通知", MessageBoxButtons.YesNo, MessageBoxIcon.Information);    if (result == DialogResult.No)    {     this.Close();    }   }    if (txtoldpwd.Text != name && txtnewpwd.Text != name && txtOK.Text != name)    {     string str = "Data source=.;Initial catalog=Myschool;Uid=sa";     SqlConnection conn = new SqlConnection(str);     string sql = "update student set Loginpwd='" + txtnewpwd.Text + "' where Loginpwd='" + txtoldpwd.Text + "'";     SqlCommand cmd = new SqlCommand(sql, conn);     try     {      conn.Open();      if (txtOK.Text.Equals(txtnewpwd.Text))      {       int count = cmd.ExecuteNonQuery();       if (count > 0)       {        MessageBox.Show("修改成功");       }      }              }     catch (Exception)     {      MessageBox.Show("异常!"); ;     }     finally     {      conn.Close();     }    }  }  private void FrmUpdate_Load(object sender, EventArgs e)  {   txtoldpwd.Text = Tool.pwd;  } private void btncancel_Click(object sender, EventArgs e)  {   this.Close();  } 

4.查找学生信息(FrmReseach)

丰富“WinForms” 的一个别样"项目"(学生管理)

从查找可以跳转到添加/修改/删除窗体

private void btnselect_Click(object sender, EventArgs e) {  UpdateSelect(); } //按学生编号查找的方法 public void LoadDataFromDBToListView(string sql) {  string str = "data source=.;initial catalog=MySchool;uid=sa";  SqlConnection con = new SqlConnection(str);  SqlCommand cmd = new SqlCommand(sql, con);  try  {   con.Open();   SqlDataReader dr = cmd.ExecuteReader();   if (dr != null)   {    if (dr.HasRows)    {     while (dr.Read())     {      //每从DB中读取出一条数据,需要形成一个ListViewItem对象,代表的是ListView中的一行      int stuNo = Convert.ToInt32(dr["studentno"]);      //第二列 学生名字      string stuName = Convert.ToString(dr["studentname"]);      //第三列  性别      string stugender = Convert.ToString(dr["gender"]);      //第四列  年级名称      string gname = Convert.ToString(dr["gradename"]);      //第五列  电话      string phone = Convert.ToString(dr["phone"]);      //第六列   地址      string address = Convert.ToString(dr["address"]);      //第七列   邮箱      string email = Convert.ToString(dr["email"]);      //第八列   出生日期      string birthday = Convert.ToString(dr["birthday"]);      ListViewItem lvItem = new ListViewItem(stuNo.ToString());      lvItem.SubItems.Add(stuName);      lvItem.SubItems.Add(stugender);      lvItem.SubItems.Add(gname);      lvItem.SubItems.Add(phone);      lvItem.SubItems.Add(address);      lvItem.SubItems.Add(email);      lvItem.SubItems.Add(birthday);      //让lvItem和ListView关联        lvlist.Items.Add(lvItem);        lvlist.FullRowSelect = true;        lvlist.ContextMenuStrip = ctmslist;     }     dr.Close();    }   }  }  catch (Exception)  {   MessageBox.Show("异常!"); ;  }  finally  {   con.Close();  } } private void listView1_SelectedIndexChanged(object sender, EventArgs e) {  string sql = @"select Studentno,Studentname,Gender,gradename       ,phone,address,email,birthday from student,grade      where student.gradeid=grade.gradeid";  LoadDataFromDBToListView(sql); } public void UpdateSelect() {  lvlist.Items.Clear();  string sql = @"select Studentno,Studentname,Gender,gradename,phone,address      ,email,birthday from student,grade      where student.gradeid=grade.gradeid and studentname like '%" + txtname.Text + "%' ";  LoadDataFromDBToListView(sql); } private void TsStudentInfo_Click(object sender, EventArgs e) {  int stuno=Convert.ToInt32(lvlist.SelectedItems[0].Text);  FrmEditStu frm = new FrmEditStu();  frm.stuno = stuno;  frm.frmselect = this;  frm.Show(); } private void FrmColor_FormClosing(object sender, FormClosingEventArgs e) {  Application.Exit(); } private void 删除学生信息ToolStripMenuItem_Click(object sender, EventArgs e) {  int sno = Convert.ToInt32(lvlist.SelectedItems[0].Text);  FrmEditStu frm = new FrmEditStu();  frm.stuno = sno;  frm.frmselect = this;  frm.Show(); } 

5.添加学生信息(FrmEditStu)

丰富“WinForms” 的一个别样"项目"(学生管理)

添加到数据库:

private void btnSave_Click(object sender, EventArgs e) {  //接收到的学号  //判断学号是否为空来选择sql语句  //判断是否要删除信息  if (sno!=0)  {   DialogResult result=MessageBox.Show("是否删除?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Error);   if (result==DialogResult.Yes)   {    //删除    this.Hide();    ChangDelete();   }  }   if (stuno!=0)   {    //修改    this.Hide();    GetUpdate();   }      else   {    //新增    this.Hide();     GetSave();   }         }      //判断stuno是否有值来修改select语句  //新增   public void GetSave() {  string pwd = txtpwd.Text;//密码  string pwdTrue = txtPwdTrue.Text;//确认密码  string name = txtStuName.Text;//学生名  string stuGender = string.Empty;//取单选列表  if (rbtnGenderTure.Checked)  {   stuGender = "1";  }  else  {   stuGender = "0";  }  //给下拉框取值  int gid = GetIdByName();  string phone = txtPhone.Text;//电话  string address = txtAddress.Text;//地址  DateTime dt = dtBirthday.Value;//日期  string stuEmail = txtEmail.Text;//邮箱  //StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email  string sql = "insert into student values('" + pwd + "','" + name + "','" + stuGender + "'," + gid + ",'" + phone + "','" + address + "','" + dt + "','" + stuEmail + "')";  string str = "Data source=.;initial catalog=MySchool;uid=sa";  SqlConnection con = new SqlConnection(str);  SqlCommand cmd = new SqlCommand(sql, con);  con.Open();  if (pwd.Equals(pwdTrue))  {   int count = cmd.ExecuteNonQuery();   if (count > 0)   {    frmselect.UpdateSelect();    MessageBox.Show("成功!");   }   con.Close();  }  else  {   MessageBox.Show("前后密码不匹配");  }     }  //修改   public void GetUpdate()   {          string name = txtStuName.Text;//学生名    string stuGender = string.Empty;//取单选列表    if (rbtnGenderTure.Checked)    {     stuGender = "1";    }    else    {     stuGender = "0";    }    //给下拉框取值    int gid = GetIdByName();    string phone = txtPhone.Text;//电话    string address = txtAddress.Text;//地址    DateTime dt = dtBirthday.Value;//日期    string stuEmail = txtEmail.Text;//邮箱    //StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email    string sql = @"update student set studentname='" + name +     "',gender='" + stuGender + "',gradeid='" + gid + "',phone='" +     phone + "',address='"+address+"',birthday='"+dt+"',email='"+stuEmail+       "' where studentno="+txtStuNo.Text+"";      string str = "Data source=.;initial catalog=MySchool;uid=sa";    SqlConnection con = new SqlConnection(str);    SqlCommand cmd = new SqlCommand(sql, con);     con.Open();             int count = cmd.ExecuteNonQuery();     con.Close();     if (count > 0)     {      frmselect.UpdateSelect();      MessageBox.Show("成功!");     }               }  //删除   public void ChangDelete()   {    string pwd = txtpwd.Text;//密码    string pwdTrue = txtPwdTrue.Text;//确认密码    string name = txtStuName.Text;//学生名    string stuGender = string.Empty;//取单选列表    if (rbtnGenderTure.Checked)    {     stuGender = "1";    }    else    {     stuGender = "0";    }    //给下拉框取值    int gid = GetIdByName();    string phone = txtPhone.Text;//电话    string address = txtAddress.Text;//地址    DateTime dt = dtBirthday.Value;//日期    string stuEmail = txtEmail.Text;//邮箱    //StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email    string sql = @"delete from student where studentno='"+txtStuNo.Text+"' ";    string str = "Data source=.;initial catalog=MySchool;uid=sa";    SqlConnection con = new SqlConnection(str);    SqlCommand cmd = new SqlCommand(sql, con);    con.Open();    if (pwd.Equals(pwdTrue))    {     int count = cmd.ExecuteNonQuery();     if (count > 0)     {      frmselect.UpdateSelect();      MessageBox.Show("成功!");     }    }    else    {     MessageBox.Show("前后密码不匹配");    }    con.Close();   }  //根据对应条件查询班级id   public int GetIdByName() {   string str = "Data source=.;initial catalog=MySchool;uid=sa";   SqlConnection con = new SqlConnection(str);   string sql = "select gradeid from grade where gradename='"+cmbGrade.Text+"'";   SqlCommand cmd = new SqlCommand(sql, con);   int gid = 0;   try   {   con.Open();   gid =Convert.ToInt32(cmd.ExecuteScalar());   }   catch (Exception)   {   MessageBox.Show("网络异常");   }   finally   {   con.Close();   }    return gid; }  //根据对应条件查询班级gname   public string GetNameById(int gid)   {    string str = "Data source=.;initial catalog=MySchool;uid=sa";    SqlConnection con = new SqlConnection(str);    string sql = "select gradename from grade where gradeid=" + gid + "";    SqlCommand cmd = new SqlCommand(sql, con);    string name = "";    try    {     con.Open();     name =cmd.ExecuteScalar().ToString();    }    catch (Exception)    {     MessageBox.Show("网络异常");    }    finally    {     con.Close();    }    return name;   }   //加载年级下拉框   public void LoadGrade()   {    //拿到所有年级名称    string str = "Data source=.;Initial catalog=MySchool;uid=sa";    SqlConnection con = new SqlConnection(str);    string sql = "select gradename from grade";    SqlCommand cmd = new SqlCommand(sql, con);    try    {     con.Open();     SqlDataReader dr = cmd.ExecuteReader();     if (dr != null)     {      if (dr.HasRows)      {       while (dr.Read())       {        string gname = dr["gradename"].ToString();        //每读到一个年级名称,我就将"S1",添加到下拉框        cmbGrade.Items.Add(gname);       }      }     }    }    catch (Exception ex)    {     MessageBox.Show("网络异常");    }    finally    {     con.Close();    }   }   //根据学号加载其他信息   public void LoadStuInfoByStuNo()   {    string str = "Data source=.;Initial catalog=MySchool;uid=sa";    SqlConnection con = new SqlConnection(str);    string sql = "select * from student where studentno="+stuno+"";    SqlCommand cmd = new SqlCommand(sql, con);    try    {     con.Open();     SqlDataReader dr = cmd.ExecuteReader();     txtStuNo.Text = stuno.ToString();     if (dr!=null)     {      if (dr.HasRows)      {       while (dr.Read())       {        string stuname = dr["studentname"].ToString();        txtStuName.Text = stuname;//姓名        string stuGender = dr["gender"].ToString();        if (stuGender == "1")        {         rbtnGenderTure.Checked = true;        }        else if (stuGender == "0")        {         rbtnGender.Checked = true;        }//性别        int gid = Convert.ToInt32(dr["gradeid"]);        string gname = GetNameById(gid);        cmbGrade.Text = gname;//年级        string stuphone = dr["phone"].ToString();        txtPhone.Text = stuphone;//电话        string stuaddress = dr["address"].ToString();        txtAddress.Text = stuaddress;//地址        string stuemail = dr["email"].ToString();        txtEmail.Text = stuemail;//邮箱        DateTime stubirthday = Convert.ToDateTime(dr["birthday"]);        dtBirthday.Value = stubirthday;//出生日期        }      }     }    }    catch (Exception)    {     MessageBox.Show("异常!!"); ;    }    finally     {    }   } private void FrmEditStu_Load(object sender, EventArgs e) {     //判断学号是否为空来选择sql语句  if ( sno != 0)  {   DialogResult result = MessageBox.Show("是否删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Error);   if (result == DialogResult.Yes)   {    this.Text = "删除学生信息";    btnSave.Text = "删除";    LoadStuInfoByStuNo();   }  }   if(stuno!=0)   {    this.Text = "修改学生信息";    btnSave.Text = "修改";    LoadStuInfoByStuNo();   }       else  {   btnSave.Text = "保存";   LoadGrade();  } } private void FrmEditStu_FormClosing(object sender, FormClosingEventArgs e) {  Application.Exit(); } private void btnClear_Click(object sender, EventArgs e) {  this.Close(); } 

6.动态图片时钟

丰富“WinForms” 的一个别样"项目"(学生管理)

计时控件:

丰富“WinForms” 的一个别样"项目"(学生管理)

通过时间来让几张图连接形成动态的计时:

private int index = 0; private void timers_Tick(object sender, EventArgs e) {  if (index<imglist.Images.Count-1)  {   index++;  }  else  {   index = 0;  }  piclist.Image = imglist.Images[index]; } 

WinForms很重要 ,虽说难度不是很大,但它的内容太多,之间的融合又太复杂,所以难易与否只有自己知道,但只要认真听课、刻苦学习,我想时间会给我们大家最好的结果,所以我希望大家能指出我的一些不足之处,相信我们的互帮互助能让我们都变得更好。

正文到此结束
Loading...