Как использовать элемент на форме из другого класса C#



Итак, я создал приложение Windows Form и сделал библиотеку, добавил ссылку, чтобы я мог использовать классы из библиотеки.



Теперь у меня есть метод, который находится в классе, который находится в этой библиотеке, ему нужно изменить pic в PictureBox, так как я получаю доступ к pictureBox, который находится в форме (Form1).



А также было бы неплохо, чтобы метод смог получить в каком виде элемента он находится, например в picturebox1 или picturebox2 так, чтобы он изменял pictureBox, который он вызывает от.



Но главным образом как получить доступ к этому pictureBox.

581   4  
c#

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

    Ничего не найдено.