Liên kết đó là chính xác. Xử lý EditingControlShowing event
của DataGridView. Trong trình xử lý sự kiện này, hãy kiểm tra xem cột hiện tại có thuộc sở thích của bạn hay không. Và, sau đó tạo ra một đối tượng combobox tạm thời: -
ComboBox comboBox = e.Control as ComboBox;
MSDN có một mẫu: Xem trong ví dụ phần here. Lưu ýInheritance Hierarchy
& Class Syntax
trong liên kết MSDN: -
public class DataGridViewComboBoxEditingControl: ComboBox, IDataGridViewEditingControl
private DataGridView dataGridView1 = new DataGridView();
private void AddColorColumn()
{
DataGridViewComboBoxColumn comboBoxColumn =
new DataGridViewComboBoxColumn();
comboBoxColumn.Items.AddRange(
Color.Red, Color.Yellow, Color.Green, Color.Blue);
comboBoxColumn.ValueType = typeof(Color);
dataGridView1.Columns.Add(comboBoxColumn);
dataGridView1.EditingControlShowing +=
new DataGridViewEditingControlShowingEventHandler(
dataGridView1_EditingControlShowing);
}
private void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
ComboBox combo = e.Control as ComboBox;
if (combo != null)
{
// Remove an existing event-handler, if present, to avoid
// adding multiple handlers when the editing control is reused.
combo.SelectedIndexChanged -=
new EventHandler(ComboBox_SelectedIndexChanged);
// Add the event handler.
combo.SelectedIndexChanged +=
new EventHandler(ComboBox_SelectedIndexChanged);
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
((ComboBox)sender).BackColor = (Color)((ComboBox)sender).SelectedItem;
}
Nguồn
2012-06-21 16:36:47
Vui vì tôi có thể trợ giúp, tôi sẽ theo dõi thêm bất kỳ câu hỏi nào của bạn khi tôi đã có dự án mở :). – KreepN
Bản sao có thể có của [Sự kiện nào bắt sự thay đổi giá trị trong combobox trong một DataGridViewCell?] (Http://stackoverflow.com/questions/5652957/what-event-catches-a-change-of-value-in-a -combobox-in-a-datagridviewcell) –