Контейнер компонентов C #

#c# #winforms

#c# #приложения WinForms

Вопрос:

В моем проекте есть Windows form и мой собственный класс

У меня есть метод в моем собственном классе

 public object Sample(Form MyForm,string ComponentName)
{

}
  

Я хочу получить компоненты «MyForm» из другого класса, как я могу это сделать?

класс формы

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

}
  

Мой собственный класс

 public class Sample
{

public object GetComponentMethod(Form form,string ComponentName)
{

////
}

}
  

Комментарии:

1. Пожалуйста, прочтите это: tinyurl.com/so-hints

Ответ №1:

Вы пробовали с:

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

обновлено

Извините, но в этом случае я не могу понять, что вы ищете!

обновлено

вы должны создать общедоступное свойство Components! Таким образом, вы можете извлекать нужные вам данные!

Комментарии:

1. BindingSources или dataset отсутствуют в элементах управления. они находятся в компонентах.

Ответ №2:

Похоже, вы просто пытаетесь получить доступ к элементам одного объекта из другого объекта.

Если это так, вам нужно предоставить какой-либо способ доступа к определенному экземпляру класса.

Если у вас будет только один экземпляр (скажем, вашей 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», или как вам угодно!