Как использовать элемент на форме из другого класса C#
Итак, я создал приложение Windows Form и сделал библиотеку, добавил ссылку, чтобы я мог использовать классы из библиотеки.
Теперь у меня есть метод, который находится в классе, который находится в этой библиотеке, ему нужно изменить pic в PictureBox, так как я получаю доступ к pictureBox, который находится в форме (Form1).
А также было бы неплохо, чтобы метод смог получить в каком виде элемента он находится, например в picturebox1 или picturebox2 так, чтобы он изменял pictureBox, который он вызывает от.
Но главным образом как получить доступ к этому pictureBox.
4 ответов:
Вы не можете заставить библиотеку классов ссылаться на приложение, так как в противном случае у вас была бы циклическая зависимость. Трудно точно сказать, что вы должны делать, но вообще говоря библиотеки классов не должны быть заинтересованы в непосредственном изменении аспектов пользовательского интерфейса - обычно это более специфичное требование для конкретного приложения.
Вполне возможно, что вам действительно нужно событие-библиотека классов опубликует событие, и приложение подпишется на него. Класс библиотека затем запускает событие в соответствующее время, оставляя код приложения для обработки события путем изменения изображения.
В вашей библиотеке есть класс с методом в нем, с необходимостью получить доступ к PictureBox в любой произвольной форме-объект, верно? Пусть ваш метод в классе библиотеки имеет параметр типа PictureBox. Вызовите этот метод из формы и передайте объект PictureBox, который вы хотите изменить.
Вы можете получить ссылку на элемент следующим образом:
void DoWork(ref TextBox t) { t.Text="Hi!"; }
Хорошо, если
pictureBoxявляется частным внутри классаForm1, Вы можете создать свойство для доступа к нему извне:public class Form1 { public PictureBox Pic { get { return pictureBox; } } }Тогда вы можете получить к нему доступ из экземпляра с помощью
form.Pic.
Comments