单击按钮提交时如何在c#中重新加载表单?

Jay*_*eer 3 c# forms button reload

我在我的C#中有一个组合框,其名称frmMain 是以button1_Click我的设置形式中添加(使用按钮)产品命名的自动填充frmSettings.当我点击button1_Click我要重新加载的按钮时,frmMain将会显示新添加的产品.

我试过用

frmMain main = new frmMain();
main.Close();
main.Show();
Run Code Online (Sandbox Code Playgroud)

我知道这段代码很有趣,但它不起作用.:d

这是Windows窗体!

编辑

请参阅我的程序图片以便更好地理解.这是我的frmMain 在此输入图像描述

这是我的设置frmSettings形式的样子.因此,正如您所看到的,当我单击提交按钮时,我想要frmMain重新加载,以便我添加到设置的更新值对frmMaincomboBox 可见.

在此输入图像描述

Der*_*Ape 5

更新:由于您在此处更改了问题,因此更新版本是为了更新您的产品

这是您的产品形式:

private frmMain main;

public frmSettings(frmMain mainForm)
{
  main = mainForm;
  InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
  main.AddProduct(textBox1.Text);
}
Run Code Online (Sandbox Code Playgroud)

它需要构造函数中的mainform将数据传递给它.

主要形式:

private frmSettings settings;
private List<string> products = new List<string>();

public frmMain()
{
  InitializeComponent();
  //load products from somewhere
}

private void button1_Click(object sender, EventArgs e)
{
  if (settings == null)
  {
    settings = new frmSettings(this);
  }
  settings.Show();
}

private void UpdateForm()
{
  comboBoxProducts.Items.Clear();
  comboBoxProducts.Items.AddRange(products.ToArray());

  //Other updates
}

public void AddProduct(string product)
{
  products.Add(product);
  UpdateForm();
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以UpdateForm()从您表单上的任何地方打电话,例如另一个按钮.此示例仅使用本地变量来存储您的产品.还有一些关于添加产品的检查缺失,但我想你明白了......