을 작동하지 않습니다.
는 당신이 정의하는 코드를 그 (ENUM?) 보여주지 않았기 때문에 무엇 INFOpermission.accessAuthorize
아무 생각이 없다, 그러나 false
이외의 경우, 이것은 당신이 기대처럼 작동하지 않을.
나는 당신이 Opening
event 핸들러 에 false
를 비활성화 할 ToolStripMenuItem
의 Enabled
property을 설정하면을 작동 할 것이라고 보장 할 수 있습니다. 그것이 당신을 위해 일하지 않는다면, 당신은 뭔가 다른 잘못을하고 있고, 우리는 계속하기 위해 더 많은 정보를 우리에게 줄 필요가 있습니다. How to: Handle the ContextMenuStrip Opening Event
편집 : 코멘트에 제공되는 새로운 정보와 무장, 지금 문제의 원인을 격리 한 문제가 발생할 경우
, 여기에 샘플 코드를 참조하십시오. ContextMenuStrip
을 DataGridView
컨트롤 인 RowTemplate
에 할당 했으므로 Opening
이벤트 처리기 메서드에서 해당 컨텍스트 메뉴에 포함 된 항목을 수정할 수 없습니다.
이것은 누군가가 "의도적으로"결정한 알려진 버그입니다. 원래 버그 보고서 here on Microsoft Connect을 볼 수 있습니다. 주어진 설명은 RowTemplate
(즉, RowTemplate
의 작동 방식)을 기반으로 새 행을 만들 때마다 할당 한 ContextMenuStrip
도 복제됩니다. 즉, 동일한 컨텍스트 메뉴 인스턴스가 각 행에 사용되지 않으며 원래 메뉴 항목에서 설정하려고 시도한 속성은 아무런 효과가 없습니다.
다행히도 우리에게 해결 방법을 제공합니다. 모든 이벤트와 마찬가지로 Opening
이벤트는 sender
매개 변수로 열리고 자하는 ContextMenuStrip
의 실제 인스턴스를 전달합니다. 이은 변경 사항을 표시 할 수 있도록 항목을 수정해야하는 컨텍스트 메뉴입니다.
코드가 무엇입니까?은 다음과 같습니다
private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
{
ContextMenuStrip cmnu = (ContextMenuStrip)sender;
cmnu.Items[1].Enabled = false;
}
공지 사항,하지만 당신은 당신이 인덱스에 의해 수정할 개별 메뉴 항목을 참조 할 필요는거야. 이 값은 메뉴에서 수정하려는 항목의 제로 기준 위치에 불과합니다. 새 인스턴스가 각각의 새 컨텍스트 메뉴 인스턴스에 대해 복제되었으므로 전에 시도한 것처럼 toolStripAuthorize
객체를 사용할 수 없습니다.
1. 더 많은 코드를 보여주십시오. 2. 할당 후에 toolStripAuthorize에 중단 점을 설정하면 Enabled가 false 또는 true로 설정됩니까? 3. INFOpermission.accessAuthorize가 예상대로 false로 설정 되었습니까? – dzendras