나는 창문 양식 응용 프로그램을 작성하려고합니다. 일부 버튼이 있고 변수의 상태에 따라 버튼의 이미지를 변경해야합니다. 리소스 폴더에 이미지를 넣고 다음과 같이 이미지를 표시하려고합니다.C에서 클래스간에 데이터를 공유하는 가장 좋은 방법 #
이미지 im = Properties.Resources.green;
내 프로젝트의 모든 클래스에서 im 값을 "im"변수 이름을 사용하여 어떻게 연결할 수 있습니까?
나는 창문 양식 응용 프로그램을 작성하려고합니다. 일부 버튼이 있고 변수의 상태에 따라 버튼의 이미지를 변경해야합니다. 리소스 폴더에 이미지를 넣고 다음과 같이 이미지를 표시하려고합니다.C에서 클래스간에 데이터를 공유하는 가장 좋은 방법 #
이미지 im = Properties.Resources.green;
내 프로젝트의 모든 클래스에서 im 값을 "im"변수 이름을 사용하여 어떻게 연결할 수 있습니까?
당신이 찾고있는 것은 단순한 전역 변수이지만 C#에서는 찾지 못했습니다. 간단한 대안은 다음과 같이 정적 공공 필드를 "메신저"(무엇이든 또는) 클래스 MyImages라는 만든 다음 수 있도록하는 것입니다 :
public class MyImages
{
public static Image im = Properties.Resources.green;
}
그런 다음, 어디서나 프로젝트에서, 당신은 "메신저에 액세스 할 수 있습니다 "이 같은 코드 :
Image newImage = MyImages.im;
일부 프로그래머들은이 같은에서 공포에 반동 수 있으며, 주장"의존성 주입 "또는 적절한 싱글 또는 만들기"메신저 "개인 및 만드는 GET 설정/공유 재산 , 또는 그런 것. 그러나 코드에서 어디서나이 이미지에 액세스해야하는 경우 간단하고 효과적인 방법이며 한 곳에서 이미지를 생성하도록 코드를 유지하는 것이 목표입니다.
당신은 ResourceManager에를 사용하여 시도 할 수 : 추가 정보를 위해
ResourceManager rm = new ResourceManager("items", Assembly.GetExecutingAssembly());
난 그냥 이미지를 한 번 가져오고 그것을 필요로 아무것도에 전달할 것 here
을 찾습니다. ** ** 유연한 방법입니다. – Joren
@Joren : 음, 좋아요,하지만 그것을 통과 시키십시오 * 어떻게 * 어디서 *, 정확히? 내 코드 샘플에서 이미지는 리소스에서 정확히 한 번 추출 된 다음 "MyImages.im"을 호출하여 프로젝트 내의 모든 코드에서 사용할 수 있습니다. – MusiGenesis
Form을 생성자에서 가져 와서 비공개 필드에 저장해야합니다. 그런 다음 양식에 정의 된 모든 이벤트 핸들러가이를 직접 사용할 수 있습니다. 폼의 자식 인 사용자 지정 컨트롤이 이미지에 액세스해야하는 경우 해당 컨트롤의 해당 컨트롤로 전달합니다. 이 부분은 지나치지 만 추가로 변경하지 않아도 코드의 일부를 다른 이미지로 재사용 할 수 있습니다. – Joren