Làm cách nào để tắt chỉnh sửa các thành phần trong combobox cho c #?


157

Tôi có một số yếu tố trong ComboBox (WinForms với C #). Tôi muốn nội dung của chúng ở trạng thái tĩnh để người dùng không thể thay đổi các giá trị bên trong khi ứng dụng được chạy. Tôi cũng không muốn người dùng thêm giá trị mới vào ComboBox

Câu trả lời:


300

Sử dụng thuộc tính ComboStyle:

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;

38
Điều này cũng có thể được đặt trong cửa sổ thuộc tính của nhà thiết kế.
Jeffrey

3
Với các phiên bản gần đây bạn có thể sử dụngcombo.Properties.TextEditStyle = DisableTextEditor
Keysharpener

21

Đây là một phương pháp khác tôi sử dụng vì thay đổi DropDownSyleđể DropDownListlàm cho nó trông 3D và đôi khi nó chỉ đơn giản là xấu xí.

Bạn có thể ngăn người dùng nhập bằng cách xử lý KeyPresssự kiện của ComboBox như thế này.

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

4
Bạn có thể thay đổi sự xuất hiện của nó trong nhà thiết kế, FlatStyle :)
StinkyCat

3
@StinkyCat Điều đó không thay đổi giao diện của danh sách bật lên, chỉ có điều khiển trong biểu mẫu.
Logarr

Bạn phải xử lý menu chuột phải, nơi bạn cũng có tùy chọn Paste. Tôi không biết làm thế nào ngay bây giờ.
Sinatr

3
Ok, để loại bỏ, Pastebạn sẽ phải tạo menu ngữ cảnh trống giả và gán nó cho ComboBox.
Sinatr

7

Yow có thể thay đổi DropDownStyle trong thuộc tính thành DropDownList. Điều này sẽ không hiển thị TextBox cho bộ lọc.

Tài sản DropDownStyle
(Ảnh chụp màn hình được cung cấp bởi FUSION CHA0S .)


0

Tôi đã thử ComboBox1_KeyPress nhưng nó cho phép xóa ký tự và bạn cũng có thể sử dụng lệnh sao chép dán. DropDownStyle của tôi được đặt thành DropDownList nhưng vẫn không sử dụng. Vì vậy, tôi đã làm dưới đây bước để tránh chỉnh sửa văn bản combobox.

  • Dưới đây mã xử lý xóa & phím xóa lùi. Và cũng vô hiệu hóa kết hợp với khóa điều khiển (ví dụ: ctr + C hoặ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
  • Trong tải hình thức sử dụng dòng dưới đây để vô hiệu hóa nhấp chuột phải vào điều khiển combobox để tránh cắt / dán thông qua nhấp chuột.

    CmbxInType.ContextMenu = new ContextMenu()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.