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


157

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

답변:


300

ComboStyle 속성을 사용하십시오.

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;

38
디자이너의 속성 창에서 설정할 수도 있습니다.
Jeffrey

3
최신 버전에서는 다음을 사용할 수 있습니다combo.Properties.TextEditStyle = DisableTextEditor
Keysharpener

21

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

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

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

4
FlatStyle :) 디자이너에서 모양을 변경할 수 있습니다.
StinkyCat

3
@StinkyCat 팝업 목록의 모양을 변경하지 않고 양식의 컨트롤 만 변경합니다.
Logarr

옵션이있는 곳에서 오른쪽 클릭 메뉴를 처리해야합니다 Paste. 지금은 잘 모르겠습니다.
Sinatr

3
좋아, 제거 Paste하려면 가짜 빈 컨텍스트 메뉴를 만들어 ComboBox에 할당해야합니다.
Sinatr


0

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()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.