DataGridView中comboBox(DataGridViewComboBoxColumn)的事件编写
2012-02-27 09:08
543 查看
DataGridView中comboBox(DataGridViewComboBoxColumn)的事件编写 收藏
DataGridView中虽然绑定了一个comboBox,但是这个comboBox没有任何事件。
今天想加一个SelectedIndexChanged事件,遍寻网络后找到一可行方法,总结如下:
view plaincopy to clipboardprint?
DataGridViewComboBoxColumn Fparmrangedesc = new DataGridViewComboBoxColumn();
dgView.Columns.Add(Fparmrangedesc);
dgView.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgView_EditingControlShowing); //主要是这句
//写事件方法
private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dgvReportParms.CurrentCell.GetType().Name == "DataGridViewComboBoxCell")
{
((ComboBox)e.Control).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//里面想写什么你说了算!
}
DataGridViewComboBoxColumn Fparmrangedesc = new DataGridViewComboBoxColumn();
……
……
dgView.Columns.Add(Fparmrangedesc);
dgView.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgView_EditingControlShowing); //主要是这句
写事件方法
private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dgvReportParms.CurrentCell.GetType().Name == "DataGridViewComboBoxCell")
{
((ComboBox)e.Control).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//里面想写什么你说了算!
}
最后,最重要的一步:把DataGridView的CausesValidation属性一定要改为false.
原因是在选择下拉框时需要数据验证,可能报错
http://blog.sina.com.cn/s/blog_73fbac9a0100sjje.html
在实际使用中,我用cellvaluechanged 就实现了.
private
void dataGridViewSN_CellValueChanged(object
sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
if (dataGridViewSN.Columns[e.ColumnIndex].Name ==
"Status")
{
if (dataGridViewSN["Status",
e.RowIndex].Value.ToString() == "Fail")
{
DataTable dtResult =
new
DataTable();
string strSql;
strSql = string.Format(SqlHelper.Instance.GetSql("QueryErrorCode"),
comboActivity.Text);
dtResult = SqlHelper.Instance.executeSql(strSql);
DataGridViewComboBoxCell cb = (DataGridViewComboBoxCell)dataGridViewSN.Rows[e.RowIndex].Cells["Error_Code"];
cb.DataSource = dtResult;
cb.ValueMember = "Code";
cb.DisplayMember = "drop_desc";
cb.ReadOnly = false;
//dataGridViewSN.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
}
else
{
DataGridViewComboBoxCell cb = (DataGridViewComboBoxCell)dataGridViewSN.Rows[e.RowIndex].Cells["Error_Code"];
cb.Value = null;
cb.DataSource = null;
cb.Items.Clear();
cb.ReadOnly = true;
}
}
}
}
DataGridView中虽然绑定了一个comboBox,但是这个comboBox没有任何事件。
今天想加一个SelectedIndexChanged事件,遍寻网络后找到一可行方法,总结如下:
view plaincopy to clipboardprint?
DataGridViewComboBoxColumn Fparmrangedesc = new DataGridViewComboBoxColumn();
dgView.Columns.Add(Fparmrangedesc);
dgView.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgView_EditingControlShowing); //主要是这句
//写事件方法
private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dgvReportParms.CurrentCell.GetType().Name == "DataGridViewComboBoxCell")
{
((ComboBox)e.Control).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//里面想写什么你说了算!
}
DataGridViewComboBoxColumn Fparmrangedesc = new DataGridViewComboBoxColumn();
……
……
dgView.Columns.Add(Fparmrangedesc);
dgView.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgView_EditingControlShowing); //主要是这句
写事件方法
private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dgvReportParms.CurrentCell.GetType().Name == "DataGridViewComboBoxCell")
{
((ComboBox)e.Control).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//里面想写什么你说了算!
}
最后,最重要的一步:把DataGridView的CausesValidation属性一定要改为false.
原因是在选择下拉框时需要数据验证,可能报错
http://blog.sina.com.cn/s/blog_73fbac9a0100sjje.html
在实际使用中,我用cellvaluechanged 就实现了.
private
void dataGridViewSN_CellValueChanged(object
sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
if (dataGridViewSN.Columns[e.ColumnIndex].Name ==
"Status")
{
if (dataGridViewSN["Status",
e.RowIndex].Value.ToString() == "Fail")
{
DataTable dtResult =
new
DataTable();
string strSql;
strSql = string.Format(SqlHelper.Instance.GetSql("QueryErrorCode"),
comboActivity.Text);
dtResult = SqlHelper.Instance.executeSql(strSql);
DataGridViewComboBoxCell cb = (DataGridViewComboBoxCell)dataGridViewSN.Rows[e.RowIndex].Cells["Error_Code"];
cb.DataSource = dtResult;
cb.ValueMember = "Code";
cb.DisplayMember = "drop_desc";
cb.ReadOnly = false;
//dataGridViewSN.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
}
else
{
DataGridViewComboBoxCell cb = (DataGridViewComboBoxCell)dataGridViewSN.Rows[e.RowIndex].Cells["Error_Code"];
cb.Value = null;
cb.DataSource = null;
cb.Items.Clear();
cb.ReadOnly = true;
}
}
}
}
相关文章推荐
- DataGridView中comboBox(DataGridViewComboBoxColumn)的事件编写
- DataGridView中comboBox(DataGridViewComboBoxColumn)的事件编写
- 如何给DataGridViewComboBoxColumn写事件
- DataGridView中DataGridViewComboBoxColumn的一些相关应用(一)让其值改变时触发事件-转
- winform dataGridView DataGridViewComboBoxColumn 下拉框事件
- DataGridViewComboBoxColumn 添加下拉及触发事件
- dataGridViewComboBoxColumn添加事件
- winform dataGridView DataGridViewComboBoxColumn 下拉框事件代码
- DataGridView中DataGridViewComboBoxColumn的一些相关应用(一)让其值改变时触发事件
- DataGridViewComboBoxColumn使用注意点
- C# DataGridView中ComboBox下拉更改事件
- datagridview中DataGridViewComboBoxColumn值的比较与选择触发的事件
- c# winform 之DataGridViewComboBoxColumn的使用
- DataGridView中ComboBoxColumn列点一下出下拉框
- DataGridViewComboBoxColumn的使用示例
- DataGridView中ComboBoxColumn改变为可编辑的
- DataGridView嵌入comboBox以及DataGridViewComboBoxColumn数据绑定
- DataGridViewComboboxColumn 使用 Enum的几种方式
- 在Datagridview 控件DataGridViewComboBoxColumn怎么点两次才下拉下来
- DataGridView中的DataGridViewComboBoxColumn使用时的一些问题