传递到已经打开的表格

时间:2011-04-07 13:01:40

标签: c# .net winforms forms

我正在尝试从数据库加载一些信息。

为此,我打开一个列出可以加载的所有内容的表单。

当您点击加载时,我想将ID传回原始表单。

但是我似乎无法以该形式调用方法。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:1)

我会翻看这个:

  1. 将选择表单转换为模式对话框,该对话框由要加载内容的表单创建和显示
  2. 通过对话框中的属性或方法公开对话框中的选择
  3. 这样选择表单将与调用者分离,并且可以在任何有意义的地方重用,而无需修改它。

    在选择对话框表格中:

    public string GetSelectedId()
    {
        return whateverIdThatWasSelected;
    }
    

    在通话表格中:

    using(var dlg = new SelectionDialogForm())
    {
        if (dlg.ShowDialog() == DialogResult.OK)
        {
            DoSomethingWithSelectedId(dlg.GetSelectedId());
        }
    }
    

答案 1 :(得分:0)

您可以向表单类添加属性,并从其他表单引用它。

例如

public class FormA : Form
{

private string _YourProperty = string.empty;

public string YourProperty
{
 get
 {
  return _YourProperty;
 }
 set
 {
  _YourProperty = value;
 }
}

}

public class FormB : Form
{

public void ButtonClick(object sender, EventArgs args)
{
 using (FormA oForm = new FormA)
 {
  if (oForm.ShowDialog() == DialogResult.OK)
  {
   string Variable = oForm.YourProperty;
  }
}
}

您只需要在表单A上单击按钮设置属性,然后就可以从表单B访问它 }

答案 2 :(得分:0)

为什么不在对话框表单中为所选项创建公共属性,如下所示。

public int SelectedItemId {get;private set;}

//In your item selected code, like button click handler..
this.SelectedItemId = someValue;

然后只需以对话框

打开表单
//Open the child form
using (var form = new ChildForm())
{
    if (form.ShowDialog(this) == DialogResult.OK)
    {
        var result = form.SelectedItemId;//Process here..
    }
}

答案 3 :(得分:0)

执行此操作的正确方法是引入两个表单使用的Controller类。然后,您可以在Controller上使用属性,当设置它时将触发NotifiyPropertyChanged事件。

请参阅INotifyPropertyChanged了解详情