2011-11-22 8 views
0

2 그리드가 있습니다. 사용자가 하나의 그리드에서 편집을하고있을 때, 나는 다른 그리드가 포커스를 얻지 못하도록하거나, 적어도 다른 그리드가 포커스 된 행을 변경하지 못하도록하고 싶습니다.어떻게 gridview 포커스를 얻지 못하도록 방지하려면?

예 : 부모 그리드, 어린이 그리드.

사용자가 특정 부모의 하위 항목에서 수정중인 경우. 사용자가 갑자기 다른 부모 행으로 포커스를 이동하지 못하도록하고 싶습니다. 그렇게하는 방법 ?

+1

부모 Gridview를 Enabled = false로 설정하려고 했습니까? 이것은 컨트롤이 포커스를 얻지 못하게해야합니다. – Alex

+0

DevExpress.XtraGrid.Views.Grid를 사용하고 있습니다. 실제로 Enabled로 시도해 보았지만 정상적으로 작동했지만 문제가 너무 많아서 볼 수 없게되었습니다. 사용자가 변경된 느낌이 들지 않도록 시각적 속성을 변경하지 않고 비활성화 할 수 있습니까? –

답변

1

컨트롤에서 포커스를받지 못하게하는 유일한 방법은 활성화 또는 표시 속성을 변경하는 것입니다.

부모의 Enabled 속성을 "false"(예 : CellBeginEdit)로 변경 한 다음 "true"(예 : CellEndEdit 이벤트)로 변경하면 사용자가 새 부모 행을 선택할 수 없습니다.

+0

DevExpress.XtraGrid.Views.Grid를 사용하고 있습니다. 실제로 Enabled로 시도했지만 제대로 작동하지만 문제가 너무 많아서 볼 수 없게되었습니다. . 시각적 속성을 변경하지 않고 비활성화하면 사용자가 변경된 것을 느낄 수 없습니다. –

+0

나는 그 통제에 정말로 익숙하지 않다. 그러나 무능한 통제의 색깔 변화는 전에 사람들이 불평 한 것입니다. 내가들은 유일한 해결책은 BackgroundColor를 수동으로 변경하는 것입니다. 아마도이 Gridview에 대한 더 많은 옵션이있는 것처럼 보입니다 ... http://documentation.devexpress.com/#WindowsForms/CustomDocument755를 보셨습니까? –

0

(모든 속성이 일치하지 않는 경우 단지 개념이 너무 무시)가이 작업을 수행하는 방법은 여러가지가 있지만 내가 그것을 얼마나 이잖아 :

이 속성이라는 모드를 작성하고 다음을 설정하는 열거 형을 사용 편집 또는 없음 등

GridViewParent 및 GridViewChild가 있다고 가정합니다. 하위 격자의 FocusedRow 이벤트에서 모든 코드의 시작 부분에 모드 값을 편집으로 설정하고 이벤트의 모든 코드 끝에서 없음으로 설정합니다.

그런 다음 부모 그리드의 FocusedRow 이벤트에서 모드 값이 편집인지 아닌지 확인한 후 편집 중이면 e.Cancel 또는 무언가를 사용하여 부모의 집중 이벤트에서 벗어납니다.

지금 어떤 그리드를 사용하고 있는지 알려 주시면 코드를 보내 드리겠습니다.

+0

DevExpress.XtraGrid.Views.Grid를 사용하고 있습니다. 실제로 Enabled로 시도했지만 정상적으로 작동했지만 문제가 너무 많아서 볼 수 없게되었습니다. 시각적 속성을 변경하지 않고 비활성화하면 사용자가 변경된 것을 느낄 수 없습니다. –

관련 문제