DataGridUI.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace ProjectManagementSystem.UI
  11. {
  12. public partial class DataGridUI : UserControl, IDisplayUI
  13. {
  14. private int selectRowIndexOfordersDataGridView; // 记录选中的行号
  15. private int selectColumnIndexOfordersDataGridView; // 记录选中的列号
  16. private int scrollingRowIndexOfordersDataGridView; // 记录垂直滚动条位置
  17. private int scrollingColumnIndexOfordersDataGridView; // 记录水平滚动条的位置
  18. public DataGridUI()
  19. {
  20. InitializeComponent();
  21. }
  22. public virtual bool Init()
  23. {
  24. return true;
  25. }
  26. public virtual void UpdateDisplay()
  27. {
  28. }
  29. public void ShowDataGrid(object dataSource)
  30. {
  31. this.Invoke(new MethodInvoker(() =>
  32. {
  33. this.SuspendLayout();
  34. if (dataGridView1.CurrentCell != null && dataGridView1.RowCount != 0 && dataGridView1.ColumnCount != 0)
  35. {
  36. selectRowIndexOfordersDataGridView = dataGridView1.CurrentCell.RowIndex;
  37. selectColumnIndexOfordersDataGridView = dataGridView1.CurrentCell.ColumnIndex;
  38. scrollingRowIndexOfordersDataGridView = dataGridView1.FirstDisplayedScrollingRowIndex;
  39. scrollingColumnIndexOfordersDataGridView = dataGridView1.FirstDisplayedScrollingColumnIndex;
  40. }
  41. this.dataGridView1.DataSource = dataSource;
  42. int n = dataGridView1.RowCount;
  43. int m = dataGridView1.ColumnCount;
  44. if (n != 0 && m != 0)
  45. {
  46. if (selectRowIndexOfordersDataGridView < n && selectColumnIndexOfordersDataGridView < m &&
  47. scrollingRowIndexOfordersDataGridView < n && scrollingColumnIndexOfordersDataGridView < m)
  48. {
  49. dataGridView1.CurrentCell = dataGridView1.Rows[selectRowIndexOfordersDataGridView].Cells[selectColumnIndexOfordersDataGridView];
  50. dataGridView1.FirstDisplayedScrollingRowIndex = scrollingRowIndexOfordersDataGridView;
  51. dataGridView1.FirstDisplayedScrollingColumnIndex = scrollingColumnIndexOfordersDataGridView;
  52. }
  53. }
  54. this.ResumeLayout(false);
  55. }));
  56. }
  57. }
  58. }