[C#] C #의 콤보 상자에서 요소 편집을 비활성화하는 방법은 무엇입니까?

ComboBox (WinForms with C #)에 몇 가지 요소가 있습니다. 응용 프로그램이 실행될 때 사용자가 내부의 값을 변경할 수 없도록 내용을 정적으로 만들고 싶습니다. 또한 사용자가 ComboBox에 새로운 값을 추가하는 것을 원하지 않습니다



답변

ComboStyle 속성을 사용하십시오.

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;


답변

이것은 다음으로 변경 DropDownSyle하기 때문에 사용하는 또 다른 방법입니다.DropDownList 는 때때로 3D와 그냥 일반 추한 모습한다.

KeyPress이와 같이 ComboBox 의 이벤트를 처리하여 사용자 입력을 방지 할 수 있습니다 .

private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
      e.Handled = true;
}


답변

Yow는 속성의 DropDownStyle을 DropDownList로 변경할 수 있습니다. 필터의 TextBox는 표시되지 않습니다.

DropDownStyle 속성
( FUSION CHA0S에서 제공 한 스크린 샷 )


답변

ComboBox1_KeyPress를 시도했지만 문자를 삭제할 수 있으며 복사 붙여 넣기 명령을 사용할 수도 있습니다. 내 DropDownStyle이 DropDownList로 설정되었지만 여전히 사용되지 않습니다. 콤보 상자 텍스트 편집을 피하기 위해 아래 단계를 수행했습니다.

  • 아래 코드는 삭제 및 백 스페이스 키를 처리합니다. 또한 제어 키와의 조합을 비활성화합니다 (예 : ctr + C 또는 ctr + X)

     Private Sub CmbxInType_KeyDown(sender As Object, e As KeyEventArgs) Handles CmbxInType.KeyDown
        If e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then
            e.SuppressKeyPress = True
        End If
    
        If Not (e.Control AndAlso e.KeyCode = Keys.C) Then
            e.SuppressKeyPress = True
        End If
    End Sub
  • 폼로드에서 아래 줄을 사용하여 마우스 클릭을 통한 잘라 내기 / 붙여 넣기를 피하기 위해 콤보 상자 컨트롤을 마우스 오른쪽 버튼으로 클릭하지 마십시오.

    CmbxInType.ContextMenu = new ContextMenu()

답변