IT박스

내 콤보 상자에서 마우스 휠 스크롤을 방지하려면 어떻게합니까?

itboxs 2020. 12. 30. 07:55
반응형

내 콤보 상자에서 마우스 휠 스크롤을 방지하려면 어떻게합니까?


콤보 박스가 있는데 사용자가 마우스 휠로 항목을 스크롤하지 못하도록하고 싶습니다.

그렇게하는 쉬운 방법이 있습니까?

(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;

참조 URL : https://stackoverflow.com/questions/1882993/c-sharp-how-do-i-prevent-mousewheel-scrolling-in-my-combobox

반응형