我如何更新另一个表单gridviewdata基于条件的主要形式

本文关键字:条件 于条件 gridviewdata 何更新 更新 另一个 表单 | 更新日期: 2023-09-27 18:15:43

我有两个形式MainForm.csPopupForm.cs

MainForm.cs上的按钮点击,我将打开另一个表单,并希望显示一个接一个的值,这是通过循环进入网格视图行

foreach (var item in listBox1.Items)
{
    //which executes cmd commands for ItemListBox and based on that Want to show current item on grid view which is on PopupForm.cs
    // show gridview item
    // grid view bind
    PopupForm obj = new PopupForm(listBox1.Items);
    obj.ShowDialog();
}

PopupForm.cs

ListBox.ObjectCollection _projectList;
public PopupForm(ListBox.ObjectCollection objectCollection)
{
    _nameList = objectCollection;
    InitializeComponent();
}
private void PopupForm_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Name");
    foreach (string items in _nameList )
    {
        DataRow row = dt.NewRow();
        dt.Rows.Add(items);
    }
    this.myGridView.DataSource = dt;
}

但是这将在一次射击中绑定所有项。我如何一个一个地显示循环进行的项目?

我如何更新另一个表单gridviewdata基于条件的主要形式

由于希望在循环中逐个显示项,因此可能需要将整个集合传递给对话框表单,然后使用计时器显示每个项:

ListBox.ObjectCollection nameList;
DataTable dt = new DataTable();
private int rowIndex = 0;
private Timer timer = new Timer();
public PopupForm(ListBox.ObjectCollection objectCollection) {
  this.InitializeComponent();
  dt.Columns.Add("List");
  myGridView.DataSource = dt;
  nameList = objectCollection;
  timer.Interval = 1000;
  timer.Tick += timer_Tick;
  timer.Start();
}
private void timer_Tick(object sender, EventArgs e) {
  if (rowIndex >= nameList.Count) {
    timer.Stop();
  } else {
    DataRow row = dt.NewRow();
    row[0] = nameList[rowIndex];
    dt.Rows.Add(row);
    rowIndex++;
  }
}

你不需要在循环中显示表单,所以只需要传递集合并显示表单:

PopupForm pop = new PopupForm(listBox1.Items);
pop.ShowDialog();