조이_엔
1
안녕하세요.
현재 프레임워크 4.7.2 C# 에서 WINFORM 으로 상품 매입 관리 프로그램을 개발하는 중인데.
어려운 점에 봉착하여 도움을 받고자 질문을 드립니다.
매입을 처리하는 FORM 위에 TEXT BOX, BUTTON 등 여러개의 컨트롤들이 올려져 있는 상태에서
일반적으로는 매입시 필요한 내용들을 작성 후 저장 버튼을 눌러 저장을 하는데
클라이언트의 요구는 마우스가 FORM 화면의 어디에 있든 상관없이
마우스 오른쪽 버튼을 누르면 저장이 되게 해달라고 합니다.
여기서 문제는 FORM 위의 수많은 컨트롤에 전부에 CLICK 이벤트를 거는 건 단순 무식한 방법인거 같아
이런 문제는 어떻게 해결을 해야 효과적으로 해결 할 수 있는지 조언을 구해봅니다.
질문 내용 읽어 주셔서 감사합니다.
2개의 좋아요
후킹으로 처리하시면 될듯합니다. c# 후킹을 검색하시면 잘 나와 있습니다.
2개의 좋아요
Form
의 WndProc
메소드를 재정의 하여 마우스 오른쪽 클릭을 감지하여 관련 처리를 할 수 있습니다.
winforms - c# register any MouseClick event on the Form - Stack Overflow
이 글의 첫번째 답변 WndProc
를 참고하세요.
4개의 좋아요
조이_엔
5
감사합니다.
덕분에 해결하고 공부도 했습니다.
3개의 좋아요
조이_엔
6
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개의 좋아요
조이_엔
8
아 제 코드에 오류가 있습니다.
www.sysnet.pe.kr/3/0/5508
세심하게 테스트 해봤어야 하는데…
죄송합니다.(–)(__)
2개의 좋아요
괜찮습니다. 누구나 시행착오를 하니까요. 계속 나눠 주십시요.