วิธีการปิดการใช้งานการแก้ไของค์ประกอบใน combobox สำหรับ c #?


157

ฉันมีองค์ประกอบบางอย่างใน ComboBox (WinForms กับ C #) ฉันต้องการให้เนื้อหาของพวกเขาเป็นแบบคงที่เพื่อให้ผู้ใช้ไม่สามารถเปลี่ยนค่าภายในเมื่อเรียกใช้แอปพลิเคชัน ฉันไม่ต้องการให้ผู้ใช้เพิ่มค่าใหม่ให้กับ ComboBox

คำตอบ:


300

ใช้คุณสมบัติ ComboStyle:

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;

38
นอกจากนี้ยังสามารถตั้งค่าในหน้าต่างคุณสมบัติของนักออกแบบ
เจฟฟรีย์

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
@StatyCat ที่ไม่เปลี่ยนรูปลักษณ์ของรายการที่โผล่ขึ้นมาเพียงตัวควบคุมในแบบฟอร์ม
Logarr

คุณต้องจัดการเมนูคลิกขวาที่คุณมีตัวเลือกPasteด้วย ฉันไม่รู้เลยว่าตอนนี้
Sinatr

3
ตกลงเพื่อลบPasteคุณจะต้องสร้างเมนูบริบทว่างเปล่าปลอมและกำหนดให้กับ ComboBox
Sinatr

7

คุณสามารถเปลี่ยน DropDownStyle ในคุณสมบัติเป็น DropDownList ได้ นี่จะไม่แสดงกล่องข้อความสำหรับตัวกรอง

คุณสมบัติ DropDownStyle
(ภาพหน้าจอของFUSION CHA0S )


0

ฉันลองใช้ ComboBox1_KeyPress แล้ว แต่ก็สามารถลบตัวอักษรได้และคุณยังสามารถใช้คำสั่ง copy paste My DropDownStyle ถูกตั้งค่าเป็น DropDownList แต่ก็ยังไม่มีประโยชน์ ดังนั้นฉันได้ทำตามขั้นตอนด้านล่างเพื่อหลีกเลี่ยงการแก้ไขข้อความ Combobox

  • โค้ดด้านล่างจัดการคีย์ลบและแบ็คสเปซ และยังปิดใช้งานการรวมกันกับปุ่มควบคุม (เช่น 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
  • ในการใช้แบบฟอร์มโหลดด้านล่างบรรทัดเพื่อปิดการใช้งานคลิกขวาที่การควบคุม combobox เพื่อหลีกเลี่ยงการตัด / วางผ่านการคลิกเมาส์

    CmbxInType.ContextMenu = new ContextMenu()
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.