2010-03-15 8 views
1

회원 데이터를보고 편집하고 삽입 할 수있는 자체 Winform 응용 프로그램이 있습니다. 데이터의 다른 부분을 조작하는 데 사용되는 약 40 개의 양식 페이지가 있습니다.Winform App에서 읽기 전용보기 구현

내 질문은 이것입니다. 양식 페이지에 대한 읽기 전용보기를 구현하는 가장 좋은 방법은 무엇입니까?

내 생각은 Enabled = False 또는 이 수를두고 있지만 데이터 변경이 "잠금 해제"가 아닌 (NO 저장 버튼 등)을 허용하지 컨트롤 설정을 통해 주기에 있었다.

다른 사람들이 WinForm 앱에서 이것을 어떻게 처리하는지 궁금합니다.

+1

에 여기 장애인 항목 목록 상자에 기사 참고 :! 읽기 전용 = 사용 안 함. –

답변

1

필드를 편집 할 의도가 없으면 필드처럼 보이면 안된다고 생각합니다. 필드 모양처럼 보이게하면 비쥬얼 큐이 편집 가능해야합니다. 왜 그렇지 않은지 궁금해 할 수도 있습니다. 따라서 Enabled=False 대신에 읽기 전용 필드 라벨을 만드시겠습니까?

업데이트 : 대체 당신이 그 (것)들에게 텍스트 필드를 유지해야하는 경우 레이블처럼 보이도록 그 스타일을하는 것입니다. 이것은 배경색을 회색으로하고 테두리를 제거하고 탭 제거를 의미합니다. 이렇게하려면 DisableField 함수를 만들 수 있습니다.

+0

이 설정이 가능한지 확실하지 않습니다. 정보 편집을 원할 때마다'텍스트 상자 '에'라벨'을 교환해야합니다. –

+0

예, 더 나은 사용자 환경입니다. 그렇지 않으면 사용자는 "어떻게이 필드를 활성화 할 수 있습니까?"라고 묻는 경향이 있습니다. ... – Seb

+0

그래서 현재 사용자를 기반으로하는 여러 개의 양식이 있습니다. 그들 만이 현재 읽기 전용 인 경우에는'frmMemberReadOnly'를 보여줍니다. 그들은 현재 전체 권한을 가지고 있다면 편집 가능한 컨트롤과 완전히 다른 폼 ('frmMemberFull')을 보여줍니다 .... –

1

데이터 바인딩이 읽기 전용을 지원하지 않는 경우 예, 가능하면 UI를 읽기 전용으로 만들기위한 코드를 작성하십시오. 그러나 그것은 '안전'하지 않으므로 업데이트를 트리거 할 수있는 명령을 차단해야합니다.

읽기 일관성을 유지하려는 사용자는 저장할 수없는 입력란을 사용자가 편집하지 못하게해야합니다. 그러나 다른 곳에서는 Enabled = false를 설정하지 마십시오 (선택/복사 없음).

콤보 박스에 대해 생각해보십시오. 드롭 다운 할 수 있기를 원하십니까?

+0

표준 윈도우 데이터 바인딩은 읽기 전용을 지원합니까? 두 번째 단락에서 각 필드 click_event를 모니터링하고 현재 "읽기 전용"인지 확인해야한다고 말하고 있습니까? –

+0

당신이 사용하는 데이터 바인딩의 형식이 ... 매뉴얼 일 수 있습니다. 그리고 아니오, 모든 컨트롤에 이벤트를 추가하지 말고, 블록 저장을위한 기본 로직을 확인하십시오. –

0

양식의 필드가 읽기 전용이면이 방법으로 말하고 편집 할 수없는 레이블로 바꾸십시오. 이것은 콤보 상자와 목록 상자와 같이 텍스트 상자, 확인란에 더 적합합니다. 두 경우 모두 레이블에 사용 된 선택을 표시하여 레이블을 지정해야합니다. 어떻게 생각합니까?

사실, 여기 당신이 라벨과 선택을 피하고자하는 경우 콤보 박스 /리스트 박스를 유지 할 수 있도록 몇 가지 링크 ...

  • 읽기 전용 combo-을 구현하는 방법에 대한 기사는 상자가 켜져 있습니다 CodeProject
  • 유일한 gotcha는 readonly 인 경우 정확하게 닦아 보이지 않는 콤보 상자입니다. CodeProject에있는이 기사에서는 더 세련된 방법을 보여줍니다.
  • CodeProject 여기에 읽기 전용 목록 상자로 사용되는 체크 박스와 결합 된 읽기 전용 콤보 (VB.NET) CodeProject
  • 목록 상자에 여기 IExtendedProvider를 사용하는 방법의 체크 박스 만 Social.MSDN.Microsoft.com
  • 에 여기되지 스크롤을 해제하는
  • CodeProject