#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», или как вам угодно!