读书人

c# DataGridView中的CellValueChanged

发布时间: 2012-03-31 13:13:26 作者: rapoo

c# DataGridView中的CellValueChanged响应问题
我DataGridView某一个cell是combobox,其中用CellEnter来响应单击列出所有项,用CellValueChanged来响应combobox选项改变。
现在的问题是如果我改变了第二行的combobox的选项,此时还没有响应CellValueChanged,再点击一个删除按钮,那么就会删除第二行,此时第一行的combobox就会列出所有项。我希望第一行的combobox不列出所有项。请问怎么做?
大体代码:

C# code
private void DataGridView1_CellValueChanged(    object sender, DataGridViewCellEventArgs e){    if(e.RowIndex>-1&&e.ColumnIndex = 2)    {       datagridview.Rows[e.RowIndex].Cell[1].Value = ...    }    //...}private void DataGridView1_CellEnter(    object sender, DataGridViewCellEventArgs e){    if(e.RowIndex>-1)    {       ///....     }}



[解决办法]
你可以给combobox加一个SelectedIndexChanged事件,在这个事件里面去处理,别在CellValueChanged事件里处理,看是否可以

具体我也没咋看明白你的描述。
[解决办法]
楼主,你的思路有问题,正确做法:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 1 && dataGridView1.CurrentCell.RowIndex != -1) //控制要处理的列
{
(e.Control as Combobox).SelectedIndexChanged+=new EventHandler(form1_SelectedIndexChanged); //订阅事件
}
void tform1_SelectedIndexChanged(object sender, EventArgs e)
{
.............;//事件处理
}
[解决办法]
upup楼上

读书人网 >C#

热点推荐