2013-01-14 65 views
5

Tôi đang viết biểu mẫu bao gồm một số nút và hộp tổ hợp. Nút "Ok" bị tắt theo mặc định và tôi muốn bật nó sau khi giá trị thực tế (không phải tên của hộp combo) được chọn.Kiểm tra xem giá trị ComboBox có được chọn không

Tôi biết cách truy cập giá trị đã chọn và cách kiểm tra xem giá trị đã được chọn chưa - nhưng chỉ có thể thực hiện hai lần sau khi biểu mẫu đóng (sử dụng "x" hoặc sử dụng nút "ok") bị tắt).

Bất kỳ ý tưởng nào?

Cảm ơn.

+0

Đã lâu rồi tôi không viết câu trả lời. Nhưng bạn không thể kiểm tra nó trong thuộc tính đối tượng UI bị ràng buộc? – Kevin

+0

Bạn đã thử sử dụng sự kiện 'ComboBox.SelectedIndexChanged' –

Trả lời

7

Có lẽ như sau:

private void comboBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox.SelectedIndex > -1) 
     { 
      buttonOK.Enabled = true; 
     } 
    } 

Theo mặc định, chỉ mục đã chọn của combobox là -1 (tên của combobox mà bạn không thể chọn lại sau khi chọn chỉ mục khác), vì vậy nếu bạn kiểm tra xem nó không phải là -1 thì bạn biết giá trị đã được chọn.

Tuy nhiên một giải pháp thay thế khác và thứ tôi sử dụng là nếu tôi luôn muốn có giá trị được chọn là sử dụng thuộc tính DropDownStyle và đặt thành DropDownList. Bằng cách đó chỉ mục 0 được chọn theo mặc định và người dùng chỉ có thể chọn các mục từ danh sách và không có gì khác.

0

Bạn có thể sử dụng combobox chọn chỉ số thay đổi sự kiện

Thêm phần này vào lớp InitializeComboBox bạn

this.ComboBox1.SelectedIndexChanged += 
      new System.EventHandler(ComboBox1_SelectedIndexChanged); 

sau đó trong chọn chỉ số thay đổi sự kiện mà bạn có thể kiểm tra xem hộp combox được chọn

private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ComboBox cbx= (ComboBox) sender; 
    Button1.Enabled = !string.IsNullOrEmpty(cbx.SelectedItem.ToString()); 
} 
+0

Tôi không biết tại sao điều này có +1, nó thực sự vô hiệu hóa nút khi một cái gì đó được chọn. – Mitch

+0

@MitchTWC nếu có gì đó được chọn 'string.IsNullOrEmpty' sẽ là' false' và tôi đang kiểm tra '! String.IsNullOrEmpty' sẽ trả về true và nút được bật. Bạn không chắc chắn lý do tại sao bạn nghĩ rằng nó sẽ bị vô hiệu hóa. Bạn có thể giải thích –

+0

Tôi vừa thử ví dụ của bạn, nó vô hiệu hóa nút của tôi khi tôi chọn một mục từ combobox của tôi. cbx.SelectedText trả về một chuỗi rỗng. Bạn cần sử dụng cbx.Text – Mitch

0
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox1.SelectedIndex == -1) 
      button1.Enabled = false; 
     else 
      button1.Enabled = true; 

     //or 
     //button1.Enabled = comboBox1.SelectedIndex == -1; 
    } 
+0

Tác vụ không hoạt động này 'comboBox1.SelectedValue' trả về null ngay cả khi chọn thứ gì đó tạo thành combobox. – Mitch

+0

tôi đã cập nhật câu trả lời của mình. – spajce

+0

Điều này bây giờ cho phép các nút khi không có gì được chọn, nó cần phải kích hoạt nút chỉ khi một cái gì đó được chọn. : P EDIT: Haha Tôi thấy chỉnh sửa ninja của bạn;) – Mitch

Các vấn đề liên quan