양식에 DataGridView
이 있습니다. 행을 마우스 오른쪽 버튼으로 클릭하면 컨텍스트 메뉴를 여는 프로그램이 필요합니다. 이 컨텍스트 메뉴를 사용하여 DataGridView
의 데이터를 수정할 수 있어야합니다.mouse_click 이벤트에서 DataGridView의 행 선택
마우스 오른쪽 버튼을 클릭하는 위치를 표시하는 컨텍스트 메뉴가 표시되었지만 여기에서 어디로 가야할지 잘 모릅니다. 내가 (예를 들어) 전체 행을 삭제할 것이므로, 나는 상기 행의 인덱스를 가져 와서 선택하도록 설정해야합니다. cell_clicked
이벤트로 시도했지만 왼쪽 또는 오른쪽 마우스 버튼을 눌렀는지 확인할 수 없습니다. 그러나 mouse_click
이벤트를 사용하면 행 인덱스를 가져올 수 없습니다. 내가이 방법을 시도
public Form()
{
ContextMenu contextMenu = new ContextMenu();
//Fill Context Menu
MenuItem delete = new MenuItem("Delete");
contextMenu.MenuItems.Add(delete);
}
private void grdSchedules_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
contextMenu.Show(grdSchedules, new Point(e.Y, e.Y));
//Get rowindex here and select row
}
}
: 나는 해결책을 발견
private void grdSchedules_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right) //e.Button does not work here
{
contextMenu.Show(grdSchedules, new Point(e.Y, e.Y));
}
}
당신은 당신의'CellClick'에'e.X'과'e.Y' 대신에'MousePosition'를 사용할 수 있습니다. 좌표를 격자 공간으로 변환해야 할 수도 있지만, 이는 그리 쉬운 일이 아닙니다. – DonBoitnott
이것은 당신을 도울 것입니다 : http://stackoverflow.com/questions/1718389/right-click-context-menu-for-datagrid – computer10171
나는 그것을 작동 시켰습니다. 답변을 포함하도록 위의 게시물을 편집했습니다 ... – LeonidasFett