마우스 이벤트 관련 질문 좀 드리겠습니다

안녕하세요.

현재 프레임워크 4.7.2 C# 에서 WINFORM 으로 상품 매입 관리 프로그램을 개발하는 중인데.

어려운 점에 봉착하여 도움을 받고자 질문을 드립니다.

매입을 처리하는 FORM 위에 TEXT BOX, BUTTON 등 여러개의 컨트롤들이 올려져 있는 상태에서

일반적으로는 매입시 필요한 내용들을 작성 후 저장 버튼을 눌러 저장을 하는데

클라이언트의 요구는 마우스가 FORM 화면의 어디에 있든 상관없이

마우스 오른쪽 버튼을 누르면 저장이 되게 해달라고 합니다.

여기서 문제는 FORM 위의 수많은 컨트롤에 전부에 CLICK 이벤트를 거는 건 단순 무식한 방법인거 같아

이런 문제는 어떻게 해결을 해야 효과적으로 해결 할 수 있는지 조언을 구해봅니다.

질문 내용 읽어 주셔서 감사합니다.

2개의 좋아요

후킹으로 처리하시면 될듯합니다. c# 후킹을 검색하시면 잘 나와 있습니다.

2개의 좋아요

FormWndProc 메소드를 재정의 하여 마우스 오른쪽 클릭을 감지하여 관련 처리를 할 수 있습니다.

winforms - c# register any MouseClick event on the Form - Stack Overflow

이 글의 첫번째 답변 WndProc를 참고하세요.

4개의 좋아요

간단하고 더 좋은 방법이 있었네요~~~^^

3개의 좋아요

감사합니다.
덕분에 해결하고 공부도 했습니다.

3개의 좋아요

protected override void WndProc(ref Message m)
{
// Debug 통해 마우스 오른쪽 마우스 누를때 vs 출력창에 무슨 값이 나오는지 확인한 후
// 아래 if 문으로 해결 했습니다.
// 소스 공유 합니다.

//-- Debug.Print(m.Msg.ToString());

if (m.Msg.ToString() == "123")
{
 MessageBox.Show("마우스 오른쪽");
}

base.WndProc(ref m);

}

별거없는 코드지만 혹시나 저같은 분이 있으실까바…

코드 올려봅니다.

감사합니다.

2개의 좋아요

별거 없는 코드는 없다고 생각합니다. 문제 해결의 모든 코드는 의미있습니다!

2개의 좋아요

아 제 코드에 오류가 있습니다.
www.sysnet.pe.kr/3/0/5508
세심하게 테스트 해봤어야 하는데…
죄송합니다.(–)(__)

2개의 좋아요

괜찮습니다. 누구나 시행착오를 하니까요. 계속 나눠 주십시요.