using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace DataGridViewMX { public partial class FrmMain : Form { bool _启动 = true; public FrmMain() { InitializeComponent(); } private void FrmMain_Load(object sender, EventArgs e) { int 列数 = 5; int 行数 = 10; int 选项数 = 10; // 1 建立数据 DataTable dt1 = new DataTable(); for (int i = 0; i < 列数; i++) { dt1.Columns.Add("第 " + i.ToString() + " 列"); } for (int i = 0; i < 行数; i++) { dt1.Rows.Add(); for (int j = 0; j < 列数; j++) { dt1.Rows[i][j] = "测试" + (i + j).ToString(); } } dataGridView1.DataSource = dt1; // 2 搜建ComboBox DataGridViewComboBoxColumn dcon = new DataGridViewComboBoxColumn(); dcon.Name = "选项"; dataGridView1.Columns.Insert(0, dcon); // 3 赋值ComboBox DataTable dt2 = new DataTable(); dt2.Columns.Add("选项"); for (int i = 0; i < 选项数; i++) { dt2.Rows.Add(); dt2.Rows[i][0] = "测试" + i.ToString(); } dcon.DataSource = dt2; dcon.DisplayMember = "选项"; dcon.ValueMember = "选项"; // 4 选择ComboBox try { for (int i = 0; i < 行数; i++) { ((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[0]).Value = dt1.Rows[i][0].ToString(); } } catch { } _启动 = false; } private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { //MessageBox.Show("第 " + e.RowIndex.ToString() + " 行,第 " + e.ColumnIndex.ToString() + " 列"); } private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { //MessageBox.Show("第 " + e.RowIndex.ToString() + " 行,第 " + e.ColumnIndex.ToString() + " 列"); } private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { //if (!_启动) MessageBox.Show("第 " + e.RowIndex.ToString() + " 行,第 " + e.ColumnIndex.ToString() + " 列"); } } }
运行效果截图