首先,我想道歉:
那就是说,让我们谈谈这个问题。
我有这个窗口:
如果我点击标有红色的按钮:
这将打开:
这应该是适用于市场的软件。第一个窗口负责向库存订购更多东西。第二个窗口负责将供应商添加到系统中。
组合框显示系统上的所有供应商。我想在单击用红色矩形突出显示的按钮后在第二个窗口添加供应商时,组合框将自动更新新数据。
我在这段代码中使用了“更新”按钮:
this.tb_FornecedorTableAdapter.Fill(this.tccDataSet.tb_Fornecedor);
虽然有效,但我尝试在其他窗口上使用FormClosing
,FormClosed
和Deactivate
事件并且它根本不起作用(我修改了“this”on很多这方面的代码并没有帮助我)。有办法做我想要的吗?
答案 0 :(得分:2)
在第一个窗口中声明一个公共方法:
public void RefreshCombo()
{
this.tb_FornecedorTableAdapter.Fill(this.tccDataSet.tb_Fornecedor);
}
然后在第一个窗口中添加按钮单击事件
WindowB window=new WindowB(this);
WindowB.Show();
然后在子窗口中添加一个ctor方法:
private WindowA windowParent;
public WindowB(WindowA parent)
{
InitializeComponent();
this.windowParent=parent;
}
在WindowB FormClosing事件中
this.windowParent.RefreshCombo()
答案 1 :(得分:2)
如果使用SQL Server中的数据更新ComboBox,则可以尝试:
// When button Adicionar is clicked
private void buttonAdd_Click(object sender, EventArgs e)
{
using(Form formAdd = new Form()) // This is the Gerenciar Fornecedor form
{
formAdd.ShowDialog(this); // Show the form. The next statement will not be executed until formAdd is closed
// Put the your code to update the ComboBox items here
}
}
答案 2 :(得分:1)
在这种情况下,您可以执行的操作是在子窗体上添加属性以存储组合框值,并在组合框值更改时填充它。此外,在子窗体上创建一个将从父窗体调用的方法。它将显示子窗体并返回组合框值。
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
}
private string _comboValue { get; set; }
public string ShowAndGetComboValue()
{
this.ShowDialog();
return _comboValue;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
_comboValue = comboBox1.SelectedItem.ToString();
}
}
在父表单上,您可以这样显示子表单:
ChildForm form = new ChildForm();
string comboValue = form.ShowAndGetComboValue();