【机房重构】-dataGridView 控件应用

待我称王封你为后i 2022-04-02 04:18 417阅读 0赞

前言

机房重构在完成完成了注册、充值、退卡、激活等窗体之后,突然发现操作员对卡的操作和管理完全可以通过 dataGridView 控件应用在一个窗体上实现。于是就尝试写了一下,虽然这样一来,有些功能就重复了,不过没关系,开心就好。

学生卡管理窗体

在这里插入图片描述

dataGridView 的常用属性

  • DisplayedCells 调整列宽,以适合当前屏幕上显示的行和列中的所有单元格的内容,包括标题单元格。
    在这里插入图片描述
  • DataGridViewCellStyle 标题列的字体大小在这里面设置
  • DefaultCellStyle 非标题列的字体大小在这里面设置

dataGridView 的部分功能

  • 单击列头或列中的单元格就可以选择整列
  • dataGridView添加右键菜单
  • dataGridView 只读
  • 获取被选中行某一个单元格的值

部分功能代码

  1. private void StuCardRecord_UI_Load(object sender, EventArgs e)
  2. {
  3. #region 显示全部学生卡记录
  4. Facade.StuCardRecord_Facade cardfact = new Facade.StuCardRecord_Facade();
  5. List<Entity.StuCard_Info> list = cardfact.ShowAllStuCard();
  6. dataGridView1.DataSource = list;
  7. #endregion
  8. #region 单击列头或列中的单元格就可以选择整列
  9. dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
  10. #endregion
  11. dataGridView1.ReadOnly = true;//只读
  12. }
  13. #region 选中了某一行,右击菜单
  14. private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
  15. {
  16. if (e.Button == MouseButtons.Right)
  17. {
  18. if (e.RowIndex >= 0)
  19. {
  20. //若行已是选中状态就不再进行设置
  21. if (dataGridView1.Rows[e.RowIndex].Selected == false)
  22. {
  23. dataGridView1.ClearSelection();
  24. dataGridView1.Rows[e.RowIndex].Selected = true;
  25. }
  26. //只选中一行时设置活动单元格
  27. if (dataGridView1.SelectedRows.Count == 1)
  28. {
  29. dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
  30. }
  31. //弹出操作菜单
  32. contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
  33. }
  34. }
  35. }
  36. #endregion
  37. #region 退卡
  38. private void BackCard_Click(object sender, EventArgs e)
  39. {
  40. //获取被选中行的卡号
  41. int a = dataGridView1.CurrentRow.Index;
  42. int b = Convert.ToInt32(dataGridView1.Rows[a].Cells[0].Value);
  43. if (Convert.ToString(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[9].Value) =="已退卡")
  44. {
  45. MessageBox.Show("此卡已经退卡");
  46. }
  47. else if (Convert.ToString(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[8].Value) == "使用")
  48. {
  49. MessageBox.Show("此卡正在上机,请先下机在退卡!");
  50. }
  51. else
  52. {
  53. #region 更新学生卡-余额为0,已退卡
  54. Entity.StuCard_Info stuCard = new Entity.StuCard_Info();
  55. Facade.BackCard_Facade backCard = new Facade.BackCard_Facade();
  56. stuCard.StuID = Convert.ToInt32(b);
  57. stuCard.IsBackcard = "已退卡";
  58. stuCard.Balance = Convert.ToDecimal("0");
  59. int table = backCard.UpdateBCstuCard(stuCard);
  60. #endregion
  61. #region 删除用户表
  62. Entity.User_Info Userinfo = new Entity.User_Info();
  63. Userinfo.UserID = Convert.ToInt32(b);
  64. int dt1 = backCard.DeleteUserID(Userinfo);
  65. #endregion
  66. #region 添加退卡表
  67. Entity.BackCard_Info backcardinfo = new Entity.BackCard_Info();
  68. backcardinfo.stuID = Convert.ToInt32(b);
  69. backcardinfo.stuName = Convert.ToString(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value);
  70. backcardinfo.backMoney = Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[7].Value);
  71. backcardinfo.backTime = DateTime.Now;
  72. backcardinfo.Head = Common_UI.userid;
  73. backcardinfo.isCheck = "未结账";
  74. int backTB = backCard.AddBackCard(backcardinfo);
  75. if (backTB != 0)
  76. {
  77. MessageBox.Show("退卡成功!");
  78. }
  79. else
  80. {
  81. MessageBox.Show("退卡失败!");
  82. }
  83. #endregion
  84. }
  85. }
  86. #endregion
  87. #region 充值
  88. private void Recharge_Click(object sender, EventArgs e)
  89. {
  90. if (Convert.ToString(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[9].Value) == "已退卡")
  91. {
  92. MessageBox.Show("此卡已经退卡,无法充值!");
  93. }
  94. else
  95. {
  96. //获取被选中行的卡号
  97. int a = dataGridView1.CurrentRow.Index;
  98. int b = Convert.ToInt32(dataGridView1.Rows[a].Cells[0].Value);
  99. Recharge_UI frm = new Recharge_UI();
  100. frm.Show();
  101. Recharge_UI.txtstuID.Text = Convert.ToString(b);
  102. }
  103. }
  104. #endregion
  105. #region 激活
  106. private void ReActivate_Click(object sender, EventArgs e)
  107. {
  108. MessageBox.Show("激活!");
  109. }
  110. #endregion
  111. #region 更新显示全部学生卡记录
  112. private void btnUpdate_Click(object sender, EventArgs e)
  113. {
  114. Facade.StuCardRecord_Facade cardfact = new Facade.StuCardRecord_Facade();
  115. List<Entity.StuCard_Info> list = cardfact.ShowAllStuCard();
  116. dataGridView1.DataSource = list;
  117. }
  118. #endregion`[
  119. ](https://www.cnblogs.com/lgx5/p/7041289.html)`
  120. #region 退出
  121. private void button2_Click(object sender, EventArgs e)
  122. {
  123. this.Close();
  124. }
  125. #endregion

后记

站在巨人的肩膀上完成了这些功能的集成,以上代码部分还可以再优化,dataGridView 更加优秀和强大的功能还等待着我们去学习。

查阅博客集结号
C#中datagridviewz中SelectionMode的四个属性的含义
DataGridView添加右键菜单等技巧
C# WinForm开发系列 - DataGridView 使用方法集锦
如何使datagridview一部分列只读
获取或设置当前单元格的内容
机房重构 DataGridView内容更新到数据库中


SouthEast

发表评论

表情:
评论列表 (有 0 条评论,417人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c#重构DataGridView

    前言   在重构进行查询的过程中,我们会接触一个控件:DataGridView,对于这个控件,在不同的场合会有不同的属性设置,现在我们就一起来看一下这个控件的属性设置。