ฉันจะทำให้ ComboBox ไม่สามารถแก้ไขได้ใน. NET ได้อย่างไร


205

ฉันต้องการมี "select-only" ComboBoxที่ให้รายการของรายการสำหรับผู้ใช้เพื่อเลือกจาก การพิมพ์ควรถูกปิดใช้งานในส่วนข้อความของตัวComboBoxควบคุม

googling ครั้งแรกของฉันทำให้เกิดข้อเสนอแนะที่เข้าใจผิดและซับซ้อนเกินกว่าจะจับKeyPressเหตุการณ์ได้

คำตอบ:


378

ในการทำให้ส่วนข้อความของ ComboBox ไม่สามารถแก้ไขได้ให้ตั้งค่าคุณสมบัติ DropDownStyle เป็น "DropDownList" ComboBox ตอนนี้เป็นหลักที่เลือกอย่างเดียวสำหรับผู้ใช้ คุณสามารถทำได้ในตัวออกแบบ Visual Studio หรือใน C # ดังนี้

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;

เชื่อมโยงไปยังเอกสารประกอบสำหรับคุณสมบัติ ComboBox DropDownStyleบน MSDN


8
สิ่งหนึ่งที่ต้องคำนึงถึงการทำเช่นนี้หมายความว่าคุณไม่สามารถอัปเดตTextคุณสมบัติของโปรแกรมได้อีกต่อไปคือใช้เพื่อแสดงข้อความเริ่มต้นโดยใช้ComboBox.SelectedIndex = -1;
Lankymart

มีวิธีการทำเช่นนี้ผ่าน GUI สำหรับ Visual C # โดยไม่ต้องแก้ไขในรหัสหรือไม่ ดูเหมือนว่า 'ค่าเริ่มต้น' จะเป็นสิ่งปกติที่ต้องการตั้งค่า
muzzlator

6
ฉันจะหลีกเลี่ยงลักษณะสีเทาได้อย่างไร
Anders Lindén

2
@ AndersLindénตั้งค่าคุณสมบัติ FlatStyle เป็น Flat
Xam

@Xam แล้วชายแดนจะไปไหน เมื่อ googling เล็กน้อยดูเหมือนว่าฉันต้องวาดภาพตัวเองเพื่อให้มันดูเป็นที่ยอมรับ
Anders Lindén

67

ในการเพิ่มการอ้างอิง Visual Studio GUI คุณสามารถค้นหาDropDownStyleตัวเลือกภายใต้คุณสมบัติของ ComboBox ที่เลือก:

ป้อนคำอธิบายรูปภาพที่นี่

ซึ่งจะเพิ่มบรรทัดที่กล่าวถึงโดยอัตโนมัติในคำตอบแรกไปที่ Form.Designer.cs InitializeComponent()เช่น:

this.comboBoxBatch.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

33

อยู่ใน ComboBox ของคุณและค้นหาคุณสมบัติ DropDropStyle จากหน้าต่างคุณสมบัติแล้วเลือกDropDownList



1

หากต้องการแสดงข้อมูลในอินพุตต่อไปหลังจากเลือกให้ทำดังนี้:

VB.NET
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
    e.Handled = True
End Sub



C#
Private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.