ContextmenuStrip 한개로 여러 Control Listview 나 Listbox 같은 곳에 공통적으로 사용하려고 할때
현재 컨트롤러를 알아야 할 필요가 없다. 모르면.. 여러개를 만들어야 하니까. 그런 무식한 설계는 이제 그만
이럴때 sender 로 Toolstripitem 으로 as 한뒤 그것의 Owner를 찾으면 현재 어느 컨트롤에서 클릭하여 Contextmenustrip 이 사용되어 있는지 알수 있다.. 그것이 바로 아래 코드에서 sourceControl 이고
이것이 Listview 이면 as로 처리하면 된다..
ListView listview = null;
ToolStripItem menuItem = sender as ToolStripItem;
if (menuItem != null)
{
// Retrieve the ContextMenuStrip that owns this ToolStripItem
ContextMenuStrip owner = menuItem.Owner as ContextMenuStrip;
if (owner != null)
{
// Get the control that is displaying this context menu
Control sourceControl = owner.SourceControl;
listview = sourceControl as ListView;
}
}
역시 StackOverFlow가 진리다. ㅎㅎㅎ
https://stackoverflow.com/questions/4886327/determine-what-control-the-contextmenustrip-was-used-on
'개발 > C#' 카테고리의 다른 글
C# 리스트 박스 수직 스크롤바 없애기 (0) | 2019.12.20 |
---|---|
C# 비디오 레코딩 소스 코드 (0) | 2019.11.27 |
C# <이벤트> 통신(Uart,CAN 등) 에서 실시간 값전달 (0) | 2019.09.30 |
C# Dictionary sort by value (딕셔너리 정렬, 값으로) (0) | 2019.07.16 |
C# 패널 스크롤바 키보드로 움직이기 (0) | 2019.07.09 |
C# 에서 배치 파일 만들기 (0) | 2019.05.23 |
C# 압축파일에서 압축풀지 않고 이미지 가져오기 (0) | 2019.04.29 |
C# [미디어] 코덱 (0) | 2019.04.23 |