我如何更新另一个表单gridviewdata基于条件的主要形式
本文关键字:条件 于条件 gridviewdata 何更新 更新 另一个 表单 | 更新日期: 2023-09-27 18:15:43
我有两个形式MainForm.cs
和PopupForm.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;
}
但是这将在一次射击中绑定所有项。我如何一个一个地显示循环进行的项目?
由于希望在循环中逐个显示项,因此可能需要将整个集合传递给对话框表单,然后使用计时器显示每个项:
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();