我想从中打开一个,然后在循环中从另一个窗体点击该窗体上的按钮.我试过下面的代码

本文关键字:窗体 代码 按钮 循环 然后 一个 另一个 | 更新日期: 2023-09-27 17:59:28

第一种形式的代码:

int i=0;
while(i < 5)
{
    this.hide();
    form2 obj_form2 = new form2();
    obj_form2.show();
    i++;
} 

我必须在表格2中的文本框中输入一些值,点击按钮,我想将该文本框的值从表格2传递到表格1五次。尽管上面的代码我一次得到了所有五个窗口,但我希望它们在点击form2 按钮时逐一显示

是的,您可以删除while循环并保留一个类变量来检测按下按钮的次数:

private pressimes = 0;
private void btnOpenForm_Click(object sender, EventArgs e)
{
   this.hide();
   form2 obj_form2=new form2();
   obj_form2.PassedValue = pressTimes;
   obj_form2.show();
   pressTimes++;
}

在表格2中,添加:

public int PassedValue  { set; get; }

并在表单中使用它作为传递的值。或者,您可以更改表单2构造函数,并使用以下命令传递值:form2 obj_form2=new form2(pressTimes)

我想从中打开一个,然后在循环中从另一个窗体点击该窗体上的按钮.我试过下面的代码

这是要放入Form1:中的代码

this.hide();
List<string> results = new List<string>(); // List of all the returned results
for (int i = 0; i < 5; i++)
{
    form2 obj_form2 = new form2();
    obj_form2.ShowDialog();
    results.Add(obj_form2.textBox.Text);
}
this.Show();
MessageBox.Show(string.Join("'n", results)); // Show all the results

现在,在Form2中,找到用于写入返回值的textBox。选择它并查看它的属性。查找属性Modifiers并将其设置为public

现在这个代码应该可以工作了。我希望这能有所帮助。

编辑

您也可以将此功能添加到Form2:

public static string GetInput()
{
    form2 obj_form2 = new form2();
    obj_form2.ShowDialog();
    return obj_form2.textBox.Text;
}

并将前面提到的代码更改为此

this.hide();
List<string> results = new List<string>(); // List of all the returned results
for (int i = 0; i < 5; i++)
    results.Add(form2.GetInput());
this.Show();
MessageBox.Show(string.Join("'n", results)); // Show all the results

仍然要更改之前提到的Modifiers属性