2011-08-25 3 views
0

TextBoxes 및 NumericUpDowns에는 선택 후에는 선택을 취소 할 수 없다는 이상한 속성이 있습니다. 내 사용자가 NumericUpDown을 선택하고 양식의 else-where를 클릭하면 NumericUpDown이 선택 해제되어야합니다.TextBox가 아닌 컨트롤에서 MouseDown을 감지하는 방법은 무엇입니까?

불행히도, 그렇지 않습니다. 현재 저는 폼의 다른 모든 컨트롤 (예 : 패널 및 실제 폼 자체)의 MouseDown 이벤트를 처리하고 무작위 레이블의 Focus 메서드를 호출하여 NumericUpDown에서 포커스를 제거합니다. 그러나 메뉴 항목이나 스크롤 막대에는 적용 할 수 없습니다.

이렇게하는 더 좋은 방법이 있어야합니다. 사용자는 NumericUpDown 대신 패널을 스크롤하고 직관적으로 패널을 클릭 한 다음 스크롤 휠을 사용하려고 할 수 있지만 현재는 NumericUpDown이 여전히 포커스를 가지고 있기 때문에 스크롤합니다.

읽어 주셔서 감사합니다.

편집 : 문제가 여전히 해결되지 않았습니다.

답변

1

일반적으로 패널 컨트롤은 초점 조절이 불가능한 컨트롤입니다. 따라서 Panel을 클릭해도 TextBox 또는 NumericUpDown Countrol에서 포커스가 제거되지 않습니다.

해결 방법은 패널에 단추를 놓고 예를 들어 x = -100 및 y = -100으로 설정하여보기에서 멀리 이동시킬 수 있습니다. visible = false를 설정하지 마십시오.

사용자가 Panel (Panel_Click 이벤트)을 클릭 할 때마다 해당 버튼에 focus (Button.Focus())를 설정하십시오. 이 방법으로 패널은 스크롤 휠을 통해 스크롤 할 수 있습니다.

0

은 어떤 종류의 패널 내에서 숫자 상자를 동봉하고 나는 그것을 테스트하고 작동

panel1.MouseHover += new EventHandler(panel1_MouseHover); 

private void panel1_MouseHover(object sender, EventArgs e) 
     { 
      if (numericUpDown1.Focused) 
      { 
       panel1.Focus(); 
      } 
     } 

을한다.!

+0

이 방법이 실제로 도움이되는지 잘 모르겠습니다. 어쩌면 나는 뭔가를 놓치고 있지만 나는 그 반대의 것을 원한다. 마우스가 화면의 다른 곳을 클릭하면 NumericUpDown의 초점이 맞춰지지 않습니다. –

+0

예, 그렇습니다. 초점을 잃은 숫자 텍스트 상자에서 벗어나면 마우스 오버를 클릭하거나 변경할 수 있지만 원하는대로 수행 할 수 있습니다. 어떻게 도움이되는지 모르겠 음 – swordfish

+0

NumericUpDown을 선택한 다음 예를 들어 패널이나 레이블을 클릭하면 NumericUpDown이 계속 선택됩니다. 귀하의 코드가 해결하는 것이 확실하지 않지만 문제가 여전히 존재합니다. –

관련 문제