2014-11-05 1 views
0

C# windows form here. 그리고 나는이 데이터베이스 구조가 크레이 켄만큼 나쁘다는 것을 알고 있지만 그것이 내가해야 할 일입니다. 데이터베이스 하우스 테이블 해당 질문과 관련된 질문 및 필드 이름입니다. 예를 들어, 질문이 목록 5 일 이유가 오늘 들어 왔습니다. 필드 이름은 reason1, reason2, reason3, reason4, reason5의 행을 따라 표시됩니다. 그냥 더 예를 들어,이이 설정을 Aite제어 레이아웃 On 양식

PollQuestion ----------- FieldName 
5 reasons you cam in? reason1 
         reason2 
         reason3 
         reason4 
         reason5 
Fav video you saw?  favorVideo 
Three improvements?  improve1 
         improve2 
         improve3 

방법의 사진을 더 잘 그릴 수 있습니다, 그래서 그것을이

처럼 읽어야한다, 그래서 거기에 해당하는 설문 조사 질문을 한 줄에 정렬하는 fieldName에 필요
PollQusetion1 --- reason1 reason2 reason3 reason4 reason5 
PollQuestion2 ---- favorVideo 
PollQuestion3 ---- improve1 improve2 improve3 

데이터베이스를 폴링하고 설문 질문 & 필드 이름을 두 개의 개별 목록 변수에 저장 한 다음 flowlayout 패널로 출력하고 있습니다. 나는 pollquestion과 동일한 줄에 필드 이름을 유지하기 위해이 논리를 사용하려고했지만 필요에 따라 작동하지 않습니다.

if (pollquestion != "") { flowlayoutpanel1.SetFlowBreak(fieldname, true); } 

그러나 원하는 출력이 나오지 않습니다. 이 문제에 대해 더 많은 경험을 가진 사람이 나를 도울 수 있습니까? 그리고 만약 더 많은 코딩이 필요하다면, 그것도 생성 할 수 있습니다. 모든 사람에게 미리 감사하고 통찰력을 제공하십시오!

편집 ---- 111 이 출력되는 문장은 나에게 제공하는 경우 -

PollQusetion1 --- reason1 reason2 reason3 reason4 reason5 PollQuestion2 ---- favorVideo 
PollQuestion3 ---- improve1 improve2 improve3 

편집을 ------이의 이미지입니다 2222 나는 방법 경우의 참조 있었는지() 문이 작동합니다. 모든 텍스트 상자가 한 줄에 있어야하고 두 번째 레이블 테스트 텍스트 & texbox로 시작하는 것이 자신의 줄이되어야합니다. enter image description here

+0

작동하지 않는 기능은 무엇입니까? 'SetFlowBreak' 또는'if'? 내 말은, 당신은 논리에 시달리지 않습니까, 아니면 디버깅에 도움이 필요합니까 (일명 왜 SetFlowBreak가 작동하지 않는지). – Sinatr

+0

@Sinatr flowbreakout 패널에 표시 할 pollquestions 및 fieldnames가 필요한 방식의 레이아웃이 제대로 표시되지 않습니다. – MasterOfStupidQuestions

+0

좋아,'if'는 작동합니까? 'SetFlowBreak'가 호출 된 적이 있습니까? 아마도 pollquestion이'null'이고'string.IsNullOrEmpty()'를 사용해야합니다. – Sinatr

답변

0

Panel과 결합하여 TableLayoutPanel을 사용해보세요.

테이블 레이아웃으로 시작하여 질문과 같이 두 개의 열과 행을 만들면됩니다. 첫 번째 열에서는 질문 텍스트를 입력 할 위치에 레이블 (multiline, Dock = Fill)을 붙입니다. 두 번째 열에서는 원하는 텍스트 상자 (또는 체크 상자, 라디오 단추 등)를 Dock = Top으로 삽입하는 패널 (도킹 된 채우기)을 배치합니다.

다음 어려운 부분은 각 행의 높이를 결정하는 것입니다. 이것은 질문 당 필드 이름의 수를 단순히 계산하고 각 옵션이 차지하는 매직 번호 (예 : 20 픽셀)와 약간의 패딩 (어쩌면 5 픽셀)을 곱하면됩니다.

+0

dock = fill을 해당 data @ top으로 설정할 수 없습니다. 하단 만 채우도록 설정할 수 있습니까? 아니면 x/y 좌표로 채우기를 시작할 수 있습니까? – MasterOfStupidQuestions

+0

@ MasterOfStupidQuestions : data @ top은 어디에 있습니까? 나는 테이블 레이아웃 내의 모든 요소의 도크 스타일에 대해서만 이야기했다. 나는 테이블 레이아웃 자체의 도크 스타일에 대해서는 아무 말도하지 않았다. – Oliver

+0

그러나 두 개의 컨트롤이있는 경우 한 개 (또는 여러 개)를 도킹 위, 한 개는 도킹 채우기로 설정할 수 있습니다. 그런 다음 모든 상단 컨트롤이 상단에 있고 채워진 컨트롤은 남아있는 공간을 차지합니다. 그것이 당신을 위해 작동하지 않는 경우에, 당신은 선창 재산 순서의 경우에 중요하다는 것을 알아야한다. 따라서 디자인보기에서보기 - 다른 창 - 문서 개요를 열고 채우기 컨트롤이 첫 번째 것이고 다른 모든 것이 그 아래에 오는지 확인하십시오. 문서 개요에서이 주문을 변경할 수 있습니다. – Oliver