2012-01-19 3 views
0

Windows Form에 그리드 구성과 같이 1000 개의 레이블을 그렸고 각 레이블이 10으로 그리드를 형성하여 고유하게 식별되어 있다고 가정합니다 (예 : S001, S002, ... S999). 일부 레이블 주위에 직사각형을 그리고 직사각형의 레이블 만 선택할 수 있습니까? 그런 다음 해당 레이블의 색상을 예를 들어 바꿀 수 있습니다.Windows 폼에서 여러 레이블을 선택하는 경우

당신은 내가 습득하려고하는 것을 물을 수도 있습니다. 나는 주차장과 같은 자동차 베이를 표현할 수 있도록 직사각형을 그리기를 원합니다. 베이를 선택하고 색상을 바꾸면 예약 된 것처럼 말할 수 있습니다. 또한 레이블 이름을 데이터베이스에 저장하고 베이의 색상을 변경할 수 있습니다. 베이가 가득 차 있는지 여부와 점유 된 경우 mousehover 이벤트를 사용하여 팝업 또는 툴팁 텍스트를 통해 차량 정보를 가져옵니다.

이 작업을 수행 할 수 있습니까?

+0

런타임에 양식에서 사각형을 그리고 그 사각형 안에 속하는 모든 레이블을 검색 하시겠습니까? –

+0

예 Davide, 사용자가 예약 할 특정 베이 블록 (레이블)을 선택할 수 있으므로 나중에 계획을 세울 수 있습니다. – Privesh

+0

이 답변은 사용자가 찾고자하는 답변이 아닐 수도 있지만 너무 많은 Windows 컨트롤을 사용하지 않는 것이 좋습니다. 그 라벨 (또는 그 문제에 대한 모든 Windows 컨트롤)의 모든 사람이 당신이하고있는 일에 대해 부적절 할 수있는 자신 만의 처리를 할 것임을 기억하십시오. 그들은 메시지를 처리 ​​할 때마다 약간의 CPU를 훔칩니다. 물론 컨트롤을 사용하는 것이 가장 쉽고 효율적이지는 않습니다. Bob Powell의 GDI 관련 솔루션에 대한 Google의 답변을 통해 많은 것을 배울 수 있습니다. 다시 말했듯이 이것은 귀하의 답변이 아니지만 전반적인 신청을 향상시킬 수 있습니다. – silverspoon

답변

0

예, 가능합니다. WPF에서는 이것을 훨씬 쉽게 달성 할 수있었습니다. 그냥 "많은"인스턴스 뷰 모델의 컬렉션을 저장하고 적절하게 색을 지정하십시오. Color={Binding LotColor}

Windows Forms의 경우 한 가지 방법은 모든 레이블 컨트롤을 반복하는 것이고, (사각형을 그리기 위해) 테두리를 가져오고 글꼴 색 속성을 각각 조정합니다.

0

모든 Label 객체를 관리하기위한 고유 한 클래스를 만들 수 있습니다. 다시 채색하려는 모든 개체의 목록을 제공하려면 public List<Label> GetLabelsInRectangle(Rectangle rectangle)과 같은 메서드를 사용할 수 있습니다. 내부적으로 Label 객체의 2 차원 배열을 사용할 수 있다고 가정합니다.

+0

그렇게 할 수 있습니다, 한숨. 내가 C#에서 좋았 더라면 좋겠지 만 한 번에 한 단계 씩 – Privesh

관련 문제