2011-05-23 55 views
0

我有一个窗口的形式和我自己在我的项目类C#组件容器

我有我自己的类中的方法

public object Sample(Form MyForm,string ComponentName) 
{ 

} 

我想从另一个类获得“MyForm的”成分我如何制作THI?

窗体类

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

} 

个MyOwnClass

public class Sample 
{ 

public object GetComponentMethod(Form form,string ComponentName) 
{ 

//// 
} 

} 
+1

请阅读此:http://tinyurl.com/so-hints – Oded 2011-05-23 10:47:18

回答

1

你有没有试着用:

Control myControl= form.controls.Find(...)? 

更新

很抱歉,但我在这种情况下,我不明白你在找什么!

更新

你必须创建一个公共属性的组件!所以你可以检索你需要的数据!

+0

BindingSources或数据集不在Controls.they在组件中。 – dddddddd 2011-05-23 10:49:30

+0

我试过 我无法从另一个类调用Myform.Components – dddddddd 2011-05-23 10:50:16

1

看起来你只是试图从另一个对象访问一个对象的成员。

如果是这样,您需要公开某种访问某个类的特定实例的方式。

如果您只有一个实例(比如说Form1),最简单的方法就是通过一个公共静态属性公开该实例。这就是所谓的单例模式:

public partial class Form1 : Form 
{ 
    public static Form1 Singleton { get; private set; } 
    public Form1() 
    { 
     Form1.Singleton = this; 
     InitializeComponent(); 
    } 
} 

您可以在Form1中的实例使用Form1.Singleton.SomeProperty从任何地方访问。

我不是在这里推销任何特定的Singleton模式,因为在线程安全方面存在太多问题,但是对于您的简单示例,这可以完成这项工作。调用静态属性“Singleton”或“This”或“SolutionToMyWoes”或任何你喜欢的东西!