내 콤보 상자에서 마우스 휠 스크롤을 방지하려면 어떻게합니까?
콤보 박스가 있는데 사용자가 마우스 휠로 항목을 스크롤하지 못하도록하고 싶습니다.
그렇게하는 쉬운 방법이 있습니까?
(C #, VS2008)
ComboBox에 MouseWheel 이벤트를 사용합니다 .
void comboBox1_MouseWheel(object sender, MouseEventArgs e) {
((HandledMouseEventArgs)e).Handled = true;
}
참고 : 코드에서 이벤트를 생성해야합니다.
comboBox1.MouseWheel += new MouseEventHandler(comboBox1_MouseWheel);
WPF의 PreviewMouseWheel
경우 대신 이벤트를 처리하십시오 .
를 확장 ComboBox.IsDropDownOpen
할 때 선택 항목에 많은 항목이있는 경우 사용자가 마우스 스크롤을 계속 사용할 수 있도록 고려하는 것도 좋습니다 ComboBox
.
또 다른 한 가지는 전체 애플리케이션에 동일한 동작을 적용하는 것입니다.
일반적으로 다음 코드를 사용하여 위의 모든 작업을 수행합니다.
App.xaml
<Application.Resources>
<Style TargetType="ComboBox">
<EventSetter Event="PreviewMouseWheel" Handler="ComboBox_PreviewMouseWheel" />
</Style>
</Application.Resources>
App.xaml.cs
private void ComboBox_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
e.Handled = !((System.Windows.Controls.ComboBox)sender).IsDropDownOpen;
}
Mono에서도 작동하는 다른 솔루션을 사용합니다.
목표는 실수로 스크롤하는 것을 방지하는 것입니다 (즉, 사용자가 마우스 휠을 사용할 때 comboBox를 보지 않는 경우). comboBox의 보이는 부분 밖으로 스크롤하면 콤보 상자가 스크롤되지 않아야합니다. 그렇지 않으면 스크롤해야합니다.
내 솔루션 :
화면의 보이는 부분 밖에 읽기 전용 텍스트 상자를 놓습니다. form_load에서 다음 줄을 배치했습니다. hiddenTextbox.left = -100;
마우스 나가기 이벤트를 사용하여 마우스가 콤보 상자를 벗어날 때이 텍스트 상자에 포커스를 설정합니다. comboBox1_MouseLeave에서 다음 줄을 배치했습니다. hiddenTextbox.focus ();
mouseWheel 이벤트 처리 : From1.MouseWheel + = Form1_MouseWheel; textBoxHidden.MouseWheel + = Form1_MouseWheel;
'IT박스' 카테고리의 다른 글
Google API 키를 안전하게 사용하는 방법 (0) | 2020.12.31 |
---|---|
Java : Eclipse에서 .jar 파일로 내보내기 (0) | 2020.12.31 |
파이썬에서 배열 / 사전 목록을 어떻게 만들 수 있습니까? (0) | 2020.12.30 |
파이썬에서 큰 json 파일을로드하는 메모리 효율적이고 빠른 방법이 있습니까? (0) | 2020.12.30 |
VBA (Excel)에서 오류를 올바르게 처리 (0) | 2020.12.30 |