2011-04-07 30 views
0

我正在尝试执行它从数据库加载一些信息。传递给已经打开的表单

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

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

但是我似乎无法调用这种形式的方法。

任何帮助,将不胜感激。

+0

你能告诉我们你在哪里试图调用窗体上的方法的代码? – 2011-04-07 13:05:02

回答

1

我会翻转过来,这样的:

  1. 作出选择的形式加入所创建并要加载的东西
  2. 通过暴露在对话框中所做的选择形式显示一个模式对话框在该对话框的形式

这样的选择形式将呼叫者不会脱钩,无论在哪里,是有道理的,而不需要修改它可以重复使用属性或方法

在选择对话框中窗体类:

public string GetSelectedId() 
{ 
    return whateverIdThatWasSelected; 
} 

在调用形式:

using(var dlg = new SelectionDialogForm()) 
{ 
    if (dlg.ShowDialog() == DialogResult.OK) 
    { 
     DoSomethingWithSelectedId(dlg.GetSelectedId()); 
    } 
} 
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; 
    } 
} 
} 

你只需要设置对形式的一个按钮,点击你的财产,那么你可以从B型 }访问

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.. 
    } 
} 
0

正确的方式做,这是介绍这是用来通过两种形式控制器类。然后,您可以使用Controller上的属性,设置该属性将触发NotifiyPropertyChanged事件。

看到INotifyPropertyChanged更多信息

相关问题